C语言 以字符形式读写文件详解及示例代码
文件操作是C语言中必不可少的一部分,在我们的编程过程中,常常需要读取文件或将数据写入文件,本文将详细讲解以字符形式读写文件的方法及示例代码。
文件输入输出流
在C语言中,对文件的输入输出操作都是通过文件流(file stream)实现的。文件流是一种数据流,它代表了一个文件,通过文件流,我们可以将数据从文件中读取,也可以将数据写入到文件中。
C语言中提供了两种类型的文件流:
- 标准文件流
标准文件流是在程序执行时自动打开的文件流,无需显示地打开或关闭。在标准输入流stdin、标准输出流stdout以及标准错误流stderr中,stdin和stdout是默认打开的。可以将数据从stdin读取,也可以将数据写入到stdout输出;而stderr则是系统的错误输出流,一般用于输出一些程序错误信息。
- 用户文件流
用户文件流则需要我们手动打开和关闭,在打开文件后,即可使用该文件流进行数据的读写操作。
文件打开与关闭文件流
在C语言中,要对文件进行读写操作,必须先打开文件流,然后才能进行后续的读写操作。关闭文件流则是保证数据正确写入文件,避免因为忘记关闭文件流而发生数据丢失。
文件打开
使用C语言中的fopen()函数打开文件,该函数的参数包括文件名和读写方式两部分。其中,文件名可以是相对路径或绝对路径。例如:
FILE *fp; // 声明文件指针
fp = fopen("test.txt", "r"); // 打开test.txt文件,以只读方式
打开文件的方式包括:
- "r":只读方式打开文件流,如果文件不存在,则打开失败。
- "w":写方式打开文件流,如果文件不存在则创建,如果文件存在,会将文件清空。
- "a":打开文件流并追加到文件末尾,如果文件不存在则创建,如果不存在则新建一个文件。
- "rb":以二进制方式只读打开文件,用于读取图片等二进制文件。
- "wb":以二进制方式写打开文件,用于写入图片等二进制文件。
文件关闭
使用C语言中的fclose()函数关闭文件流,该函数需要传入已打开的文件指针作为参数:
fclose(fp); //关闭文件流
以字符形式读取文件内容
在打开文件流后,我们可以使用fgetc()函数以字符形式读取处理文件内容。该函数从文件流中读取并返回下一个字符,在每次调用时,文件指针指向下一个字符。
/* 一次性读取整个文件 */
char buffer[1000];
while(fgets(buffer, 1000, fp) != NULL) {
printf("%s", buffer);
}
/* 逐个字符读取 */
char c = fgetc(fp);
while(c != EOF) {
printf("%c", c);
c = fgetc(fp);
}
以字符形式写入文件内容
与读取文件内容类似,以字符形式写入文件也是使用fwrite()函数实现的。该函数需要传入写入的数据、数据长度、数据个数以及文件指针。
char str[] = "Hello World";
fwrite(str, sizeof(str), 1, fp);
示例代码
示例1:读取文件内容
该示例将以只读方式打开文件,并一次性读取整个文件内容。
#include <stdio.h>
int main() {
FILE *fp;
char buffer[1000];
fp = fopen("test.txt", "r");
if (fp == NULL) {
printf("文件打开失败!");
return -1;
}
while(fgets(buffer, 1000, fp) != NULL) {
printf("%s", buffer);
}
fclose(fp);
return 0;
}
示例2:写入文件内容
该示例将以只写方式打开文件,并将"Hello World"写入到文件中。
#include <stdio.h>
int main() {
FILE *fp;
char str[] = "Hello World";
fp = fopen("test.txt", "w");
if (fp == NULL) {
printf("文件打开失败!");
return -1;
}
fwrite(str, sizeof(str), 1, fp);
fclose(fp);
return 0;
}
以上是关于C语言读写文件的完整攻略及两条示例说明,希望能对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言 以字符形式读写文件详解及示例代码 - Python技术站