• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

C语言-结构体、联合、枚举、文件操作

武飞扬头像
今天不想改bug
帮助1

1.结构体(struct)

结构体是一种用户自定义的数据类型,它可以包含多个不同类型的成员变量,并将它们组合成一个逻辑单元。结构体可以用来表示复杂的数据结构,如图形、人员、汽车等。

struct tag_name
{
    member_type1 member_name1;
    member_type2 member_name2;
    // ...
    member_typeN member_nameN;
};

其中,tag_name是结构体的标识符,member_type是成员变量的类型,member_name是成员变量的名称。

struct Student 
{
    int id;
    char name[20];
    int age;
    float score;
};

在定义完结构体后,可以通过以下方式来创建结构体变量:

struct Student stu = { 1001, "Tom", 18, 90.5 };

也可以通过成员访问运算符.来访问结构体变量中的成员变量:

2.联合(Union)

联合是C语言中一种特殊的数据类型,它与结构体类似,都是用来组合不同类型的数据,但不同的是,联合中所有的成员变量共用同一块内存空间。

在联合中,所有成员变量的内存空间是相互重叠的,共享同一块内存区域,联合的大小等于其中最大的成员变量的大小。因此,联合通常用于需要同时使用不同类型的数据,但是只需要占用一块内存空间的情况。

定义联合的语法与定义结构体类似

union union_name
{
    member_type1 member_name1;
    member_type2 member_name2;
    // ...
    member_typeN member_nameN;
};

其中,union_name 是联合的标识符,member_type是成员变量的类型,member_name是成员变量的名称。

union Data 
{
    int i;
    float f;
    char str[20];
};

int main() 
{
    union Data data;
    data.i = 10;
    printf("data.i = %d\n", data.i);
    data.f = 3.14;
    printf("data.f = %f\n", data.f);
    strcpy(data.str, "hello");
    printf("data.str = %s\n", data.str);
    return 0;
}

在该例子中,定义了一个包含三个成员变量的联合 Data,分别是一个整型变量 i,一个浮点型变量 f 和一个字符数组 str。在 main 函数中,首先将整型变量 i 的值设置为 10,然后输出它的值。接着将浮点型变量 f 的值设置为 3.14,再次输出它的值。最后,将字符串 "hello" 复制到字符数组 str 中,并输出该数组的值。由于联合中的所有成员变量共用同一块内存空间,因此在设置了 f 和 str 的值后,i 的值会被覆盖。

3.枚举(enum)

枚举是一种用户自定义的数据类型,它可以定义一组具有相同类型的命名常量。枚举常用于表示状态、选项、菜单等。

enum enum_name
{
    value1,
    value2,
    // ...
    valueN
};

其中,enum_name是枚举的标识符,value是枚举常量的名称。

enum Weekday 
{
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday,
    Sunday
};

在定义完枚举后,可以通过以下方式来创建枚举变量:

enum Weekday today = Tuesday;

也可以通过枚举常量的名称来访问枚举变量:

printf("Today is %d\n", today);

如果没有显式地给枚举常量指定值,枚举常量的默认取值是从0开始递增的。

所以输出结果为 Today is 1,因为 Tuesday 对应的枚举常量值为 1

4.文件操作

C语言提供了一组标准的文件操作函数,可以用来打开、读写、关闭文件等操作。下面介绍一些常用的文件操作函数:

1.打开文件

打开文件需要使用 fopen() 函数

FILE* fopen(const char* filename, const char* mode);

其中,filename 是要打开的文件的名称,mode 是以何种方式打开文件的字符串参数,返回值是一个指向 FILE 类型的指针。

常用的文件打开模式如下:

  • "r":以只读方式打开文件,文件必须存在。
  • "w":以写方式打开文件,如果文件存在则清空文件,如果不存在则创建文件。
  • "a":以追加方式打开文件,如果文件不存在则创建文件。
  • "r ":以读写方式打开文件,文件必须存在。
  • "w ":以读写方式打开文件,如果文件存在则清空文件,如果不存在则创建文件。
  • "a ":以读写方式打开文件,如果文件不存在则创建文件,并在文件末尾追加内容。

例如,打开一个名为 test.txt 的文件,以只读方式打开,代码如下:

FILE* fp = fopen("test.txt", "r");

2.读写文件

在打开文件之后,可以使用 fread() 和 fwrite() 函数进行文件读写操作

size_t fread(void* ptr, size_t size, size_t count, FILE* stream);
size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream);

其中,ptr 是要读写的数据的指针,size 是每个数据项的大小,count 是要读写的数据项的数量,stream 是指向要读写的文件的指针。例如,从文件中读取一个整数

int n;
fread(&n, sizeof(int), 1, fp);

将一个整数写入文件中

int n = 10;
fwrite(&n, sizeof(int), 1, fp);

3.关闭文件

文件操作完成之后,需要使用 fclose() 函数关闭文件

int fclose(FILE* stream);

其中,stream 是要关闭的文件的指针,返回值为 0 表示关闭成功,返回值为 EOF 表示关闭失败。例如,关闭刚才打开的文件

fclose(fp);

除了上述函数外,C语言还提供了一些其他的文件操作函数,例如 fgets()fputs()fseek()ftell() 等,可以根据需要进行使用。需要注意的是,在进行文件操作时,需要对文件进行错误处理,以保证程序的健壮性。

 C语言的基础知识到这里也就结束了,还有一些会碰到的知识点可能有所遗漏,后面的话会专门做一篇文章查缺补漏。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbbkgg
系列文章
更多 icon
同类精品
更多 icon
继续加载