C语言结构

标准声明方式

struct student{
        int age;
        char sex;
    };

这个可以在main函数中定义:

 struct student a={ 20,'m'};

声明同时定义

struct student{
        int age;
        char sex;
    }a = {20,'m'};//这里就定义了变量a

最不科学的方式

struct {
        int age;
        char sex;
    }a = {20,'m'};

结构体数组

struct student{

  int age;

  chat name[10];

};

struct student s_1[10];

s_1 [0].age= 3;

s_1[0].name[0] = 's';

结构体指针

strunc student{

  int age;

  chat sex;

};

struct student *p;

struct student s_1;

p = &s_1;

p->age = 23;

p->sex = 'M';

位域

把一个字节分配给成员

struct data{

  unsigned int a:2;//表示data的低两位

  unsigned int b:4;//表示3-6

  //unsigned int :0;    //如果一个字节不够就使用这句代码,这与代码叫空域

  unsigned int c :2;//6-8

};

strunct data s1,s2;

位域可用来进行位操作

C语言结构体这里就做个简单了解,后期学习stm32的时候我会着重再讲一遍。这里我就不太深的涉及指针,内存分配等这些内容。

//________________________________________________________________________________________________________________________________________________

共用体

什么是共用体

共用体的定义:

union 共用体名{

  成员列表

}

共用体中所有成员占用同一段内存,修改一个成员会影响其余所有成员。同一时刻只能保存一个成员的值,如果对新成员赋值就会覆盖之前成员。

union data{

  int as;

  chat bs;

  double cs;

};

union data a,b,c;

a.as = 2;

b.bs = 's';

//_____________________________________________________________________________________________________________________________________

C语言文件的操作

START:

C语言中程序结束了,信息就没了,此时就需要讲所需要的信息保存下来。显然不能保存在内存中,所以就要以文件形式保存在外部储存器

步骤:

创建文件指针变量  FILE * fp;

打开文件      fp = fopen

读写文件      

  读文件  fscanf(),fread()

  写文件  fprintf(),fwrite()

关闭文件    fclose(fp);

如下面的代码:

#include "stdio.h"

void main() {

//定义一个文件指针变量

FILE * fp;

//让文件指针以只写的方式指向这个地址

fp = fopen("E:\\fire.txt","wt");

//用fprintf函数将信息写入文件指针fp指向的文件中

fprintf(fp, "sjdlksajdiokljf");

//关闭文件指针

fclose(fp);

//定义一个字符数组存文件信息

int arr[50];

//让文件指针以只读的方式指向这个地址

fp = fopen("E:\\fire.txt","rt");

//用fscanf函数讲该文件文件信息读取出来放入字符数组中

fscanf(fp,"%s",arr);

fclose(fp);

printf("%s",arr);

}

//_____________________________________________________________________________________________________________________________________________

文件使用方式        意 义
“rt”      只读打开一个文本文件,只允许读数据
“wt”      只写打开或建立一个文本文件,只允许写数据
“at”      追加打开一个文本文件,并在文件末尾写数据
“rb”      只读打开一个二进制文件,只允许读数据
“wb”    
  只写打开或建立一个二进制文件,只允许写数据
“ab”       追加打开一个二进制文件,并在文件末尾写数据
“rt+”     
读写打开一个文本文件,允许读和写
“wt+”      读写打开或建立一个文本文件,允许读写
“at+”     
读写打开一个文本文件,允许读,或在文件末追加数 据
“rb+”      读写打开一个二进制文件,允许读和写
“wb+”     
读写打开或建立一个二进制文件,允许读和写
“ab+”      读写打开一个二进制文件,允许读,或在文件末追加数据

ssss

文件常用函数表

fopen()  打开文件

fclose()  关闭文件

fread()  将数据从文件中读到缓冲区

fwrite()  将数据从缓冲区写到文件中

fprintf()  类似于printf

fcanf()   类似于scanf

feof()     判断文件活动指针是否达到文件末尾,达到就返回true

rewind()  将文件位置指示器重新至于文件开头

remove()  删除文件

fflush()    将内部缓冲区的数据写入指定文件

END:

C语言高级-结构,共用体,文件,链表的更多相关文章

  1. C语言笔记 09_共用体&typedef&输入|输出

    共用体 共用体允许您在相同的内存位置存储不同的数据类型.您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值.共用体提供了一种使用相同的内存位置的有效方式. 定义共用体 为了定义共用体, ...

  2. C语言中的共用体(union)和枚举(enum)

    1 union union Data{ int i; char ch; float f; }a={1, 'a', 1.5}; //错误 union Data a = {16}; //正确 union ...

  3. C语言作业06--结构体&文件

    1.本章学习总结 1.1 思维导图 1.2学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.定义结构体可以使代码整个练习更加紧密,非常实用,当我们需要在对一个个体的不同属性调用时可以更加系统 ...

  4. (转)C语言union(联合体 共用体)

    一直以来,union都是个很少用到的东西,对于这些不常用的结构往往记不住.这次看书又看到了,还是学习一下吧.一般在Windows API的一些数据结构中才能看到这个union,其实并不复杂.本质上来说 ...

  5. [C#.NET 拾遗补漏]14:使用结构体实现共用体

    在 C 和 C# 编程语言中,结构体(Struct)是值类型数据结构,它使得一个单一变量可以存储多种类型的相关数据.在 C 语言中还有一种和结构体非常类似的语法,叫共用体(Union),有时也被直译为 ...

  6. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  7. 瘋子C语言笔记(结构体/共用体/枚举篇)

    (一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...

  8. 全国计算机等级考试二级教程-C语言程序设计_第14章_结构体、共用体和用户定义类型

    函数的返回值是结构体类型 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> struct ...

  9. C语言博客作业06——结构体&文件

    C语言博客作业06--结构体&文件 1.本章学习总结 1.1思维导图 1.2.本章学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.结构体的本身并不难,但以结构体为基础的链表还是让我 ...

随机推荐

  1. bzoj1066 蜥蜴

    Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平 ...

  2. 小峰servlet/jsp(2)

    一.jsp javaBean组件引入 <jsp:useBean id="实例化对象名称" scope="保存范围" class="类完整名称&q ...

  3. 关于javascript的cookie的封装

    /******************cookie*********************/ /* cookie的组成部分: 名称:唯一值,不区分大小写,必须经过URL编码 值:必须经过URL编码 ...

  4. html大小写问题

    js中变量名,函数,关键字都区分大小写,如var i;和var I;是两个不同的变量. css中定义的元素名称不区分大小写的. html中,标签和标签属性统一使用小写形式,固有属性也一律使用小写,自定 ...

  5. JAVA面试相关

    2017 最新java面试题(技术面试) http://www.importnew.com/17232.html importNew-JAVA面试上篇 importNew-JAVA面试下篇 https ...

  6. c# 制作自定义控件并生成dll文件旷展到其他项目使用

    1.新建项目,同时添加一个类库,然后在类库里面定义自己的控件:完毕生成项目,然后在类库的bin目录下就自动生成了这个自定义控件的dll文件. 2.在需要使用这个自定义控件的项目里,直接ctrl+c,c ...

  7. 进程池----Pool(老的方式)----回调

    之后的进程池使用的是 ProcessPoolExecutor,它的底层使用的就是pool 为什么要有进程池?进程池的概念. 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星 ...

  8. 3.1_分类算法之k-近邻

    分类算法之k-近邻 k-近邻算法采用测量不同特征值之间的距离来进行分类 优点:精度高.对异常值不敏感.无数据输入假定 缺点:计算复杂度高.空间复杂度高 使用数据范围:数值型和标称型 一个例子弄懂k-近 ...

  9. zk-systemd

    [Unit] Description=auto run zk server After=network.target [Service] Type=simple Environment=ZHOME=/ ...

  10. openStack虚拟机error 错误状态基于差异镜像+基镜像做恢复