下面是“C语言由浅入深讲解文件的操作上篇”的完整攻略,包含了文件的基本概念以及如何进行文件的操作。
文件的基本概念
在C语言中,文件指的是存储在硬盘或其他存储设备上的可以被读取和写入的数据。文件是以二进制形式存储的,可以包含文本、图像、视频等数据。
在C语言中,可以使用标准库中的文件操作函数对文件进行读写操作。常用的文件操作函数包括fopen、fclose、fread、fwrite、fseek等。
文件的打开与关闭
要操作一个文件,首先需要打开它。使用fopen函数可以打开一个文件,该函数原型如下:
FILE *fopen(const char *filename, const char *mode);
其中,filename表示要打开的文件名,mode表示打开文件的模式。mode的取值及含义如下:
- "r":只读模式;
- "w":只写模式,如果文件不存在则创建新文件,如果文件存在则清空文件内容;
- "a":只写模式,如果文件不存在则创建新文件,如果文件存在则在文件末尾追加内容;
- "r+":读写模式,文件必须存在;
- "w+":读写模式,如果文件不存在则创建新文件,如果文件存在则清空文件内容;
- "a+":读写模式,如果文件不存在则创建新文件,如果文件存在则在文件末尾追加内容。
在文件操作完成后,需要使用fclose函数来关闭文件,该函数原型如下:
int fclose(FILE *stream);
其中,stream表示要关闭的文件指针。
文件的读写操作
要读取一个文件,可以使用fread函数,该函数原型如下:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
其中,ptr表示存储读取数据的缓冲区,size表示每个元素的大小,nmemb表示要读取的元素数量,stream表示要读取的文件指针。该函数返回实际读取的元素数量。
要写入一个文件,可以使用fwrite函数,该函数原型如下:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
其中,ptr表示要写入的数据,size表示每个元素的大小,nmemb表示要写入的元素数量,stream表示要写入的文件指针。该函数返回实际写入的元素数量。
下面是两个示例说明:
示例一:读取文本文件
下面是一个读取文本文件的示例程序:
#include <stdio.h>
int main() {
FILE *fp;
char buf[1024];
fp = fopen("test.txt", "r");
if (fp == NULL) {
printf("Failed to open file!\n");
return -1;
}
while (fgets(buf, 1024, fp) != NULL) {
printf("%s", buf);
}
fclose(fp);
return 0;
}
该程序首先使用fopen函数打开test.txt文件,并使用fgets函数逐行读取文件内容。最后使用fclose函数关闭文件。
示例二:写入二进制文件
下面是一个写入二进制文件的示例程序:
#include <stdio.h>
typedef struct {
int x;
int y;
} Point;
int main() {
FILE *fp;
Point p = {1, 2};
fp = fopen("points.bin", "wb");
if (fp == NULL) {
printf("Failed to open file!\n");
return -1;
}
fwrite(&p, sizeof(Point), 1, fp);
fclose(fp);
return 0;
}
该程序首先定义了一个结构体Point,然后创建了一个Point类型的变量p,并设置了它的x和y属性。接着使用fopen函数打开points.bin文件,并使用fwrite函数将p写入文件。最后使用fclose函数关闭文件。注意,此处使用了二进制模式打开文件("wb"),这是因为fwrite函数是按照二进制格式写入数据的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言由浅入深讲解文件的操作上篇 - Python技术站