
C语言程序设计里文件如何保存?
在C语言中,文件保存主要通过使用标准I/O库提供的函数完成。核心观点有:使用fopen函数打开文件、使用fwrite函数写入文件、使用fread函数读取文件、使用fclose函数关闭文件。fopen函数用于打开一个文件,并指定文件的打开模式。打开文件后,可以使用fwrite函数将数据写入文件,或者使用fread函数从文件中读取数据。操作完成后,必须使用fclose函数关闭文件,以确保数据完整写入磁盘并释放资源。
一、打开文件与文件模式
在C语言中,使用fopen函数可以打开一个文件。fopen函数的基本格式如下:
FILE *fopen(const char *filename, const char *mode);
其中,filename是要打开的文件名,mode是文件打开模式。常见的文件模式包括:
"r":以只读方式打开文件。文件必须存在。"w":以写入方式打开文件。如果文件存在,其内容会被清空;如果文件不存在,会创建一个新文件。"a":以追加方式打开文件。如果文件存在,写入的数据会追加到文件末尾;如果文件不存在,会创建一个新文件。"r+":以读写方式打开文件。文件必须存在。"w+":以读写方式打开文件。如果文件存在,其内容会被清空;如果文件不存在,会创建一个新文件。"a+":以读写方式打开文件。如果文件存在,写入的数据会追加到文件末尾;如果文件不存在,会创建一个新文件。
示例代码:
FILE *file = fopen("example.txt", "w");
if (file == NULL) {
perror("Error opening file");
return 1;
}
上述代码中,fopen函数以写入模式打开名为example.txt的文件。如果文件无法打开,fopen函数返回NULL,并通过perror函数输出错误信息。
二、写入文件
打开文件后,可以使用fwrite函数将数据写入文件。fwrite函数的基本格式如下:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);
其中,ptr是指向要写入的数据的指针,size是每个数据单元的大小,count是要写入的数据单元的数量,stream是指向文件的指针。
示例代码:
const char *data = "Hello, World!";
size_t result = fwrite(data, sizeof(char), strlen(data), file);
if (result != strlen(data)) {
perror("Error writing to file");
fclose(file);
return 1;
}
上述代码中,fwrite函数将字符串data写入文件。如果写入的数据数量与预期不符,fwrite函数返回值将小于strlen(data),并通过perror函数输出错误信息。
三、读取文件
要读取文件中的数据,可以使用fread函数。fread函数的基本格式如下:
size_t fread(void *ptr, size_t size, size_t count, FILE *stream);
其中,ptr是指向存储读取数据的缓冲区的指针,size是每个数据单元的大小,count是要读取的数据单元的数量,stream是指向文件的指针。
示例代码:
char buffer[256];
size_t bytesRead = fread(buffer, sizeof(char), sizeof(buffer) - 1, file);
if (bytesRead < sizeof(buffer) - 1 && ferror(file)) {
perror("Error reading from file");
fclose(file);
return 1;
}
buffer[bytesRead] = '