在C语言中,文本文件和二进制文件是什么?

1. 概述

在C语言中,文件操作是很常见的操作之一。文件的读写操作是程序中经常需要的,因此理解文件以及文件操作也是C语言编程中重要的一部分。在C语言中,文件可以分为文本文件和二进制文件。两者的区别在于存储的方式不同。

2. 文本文件

文本文件是一种基于文本的文件格式。它是由通常由ASCII编码的字符组成,每个字符占据一个字节。文本文件在C语言中的读写可以使用标准库函数fopen()和fclose()来操作。

2.1 文本文件的读操作

在C语言中,读取文本文件可以使用fscanf()、fgets()和getc()等函数。其中使用fscanf()函数读取文本文件时,需要指定读取的字符类型,比如%c表示读取一个字符,%s表示读取一个字符串,而使用fgets()函数则可以直接读取一行字符。以下是使用fgets()函数读取文本文件的示例代码:

#include <stdio.h>

int main()

{

FILE *fp;

char str[100];

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

while(fgets(str, 100, fp) != NULL)

{

printf("%s", str);

}

fclose(fp);

return 0;

}

可以看出,fgets()函数直接读取一行字符,并且每次成功读取一行之后,指针自动下移,可以继续读取下一行。

2.2 文本文件的写操作

将数据写入文本文件中可以使用fprintf()或者fputs()函数。使用fprintf()函数时需要指定输出的格式,比如%s表示输出一个字符串,而%f表示输出一个浮点数。以下是使用fputs()函数将字符串写入文本文件的示例代码:

#include <stdio.h>

int main()

{

FILE *fp;

char str[] = "Hello World!";

fp = fopen("test.txt", "w");

fputs(str, fp);

fclose(fp);

return 0;

}

使用fputs()函数将字符串写入文件,需要指定文件指针和待写的字符串。这里将字符串"Hello World!"写入了名为"test.txt"的文本文件中。

3. 二进制文件

与文本文件不同的是,二进制文件中可以包含任意类型的数据,包括整数、浮点数、字符、结构体等等。在C语言中,二进制文件的读写可以使用fread()和fwrite()函数来实现。

3.1 二进制文件的读操作

在C语言中,读取二进制文件可以使用fread()函数。fread()函数需要指定读取数据的长度和读取次数,并且需要指定文件指针和读取数据存储的位置。以下是使用fread()函数读取二进制文件的示例代码:

#include <stdio.h>

struct student

{

char name[20];

int score;

};

int main()

{

FILE *fp;

struct student s;

fp = fopen("test.dat", "rb");

fread(&s, sizeof(struct student), 1, fp);

printf("Name: %s\nScore: %d", s.name, s.score);

fclose(fp);

return 0;

}

上面的代码是一个读取二进制文件的例子。这里将一个结构体作为数据类型读取,读取的数据存储在结构体s中。读操作时需要指定文件指针和读取数据的长度和数量,这里的长度是sizeof(struct student),数量是1,表示只读取一个结构体的数据。

3.2 二进制文件的写操作

使用fwrite()函数将数据写入二进制文件中。与fread()函数相似,使用fwrite()函数时需要指定写入数据的长度和写入次数,并且需要指定文件指针和写入数据存储的位置。以下是使用fwrite()函数将数据写入二进制文件的示例代码:

#include <stdio.h>

struct student

{

char name[20];

int score;

};

int main()

{

FILE *fp;

struct student s = {"Tom", 80};

fp = fopen("test.dat", "wb");

fwrite(&s, sizeof(struct student), 1, fp);

fclose(fp);

return 0;

}

上面的代码是一个向二进制文件写入数据的例子。这里也是使用struct作为数据类型写入,将名为"Tom"的学生的分数80写入二进制文件中。

4. 总结

文本文件与二进制文件是C语言中常见的两种文件格式。文本文件是由ASCII编码的字符组成,每个字符占据一个字节,可以使用标准库函数来进行读写操作。而二进制文件中可以包含任意类型的数据,包括整数、浮点数、字符、结构体等等。二进制文件的读写需要使用特定的函数,如fread()和fwrite()等。

后端开发标签