推荐答案
// www.javascriptcn.com code example
#include <stdio.h>
int main() {
FILE *file;
char buffer[100];
// 打开文件用于写入
file = fopen("example.txt", "wb");
if (file == NULL) {
perror("Failed to open file");
return 1;
}
// 使用 fwrite 写入数据
char data[] = "Hello, World!";
fwrite(data, sizeof(char), sizeof(data) - 1, file);
// 关闭文件
fclose(file);
// 打开文件用于读取
file = fopen("example.txt", "rb");
if (file == NULL) {
perror("Failed to open file");
return 1;
}
// 使用 fread 读取数据
fread(buffer, sizeof(char), sizeof(data) - 1, file);
buffer[sizeof(data) - 1] = '\0'; // 添加字符串结束符
// 打印读取的数据
printf("Read data: %s\n", buffer);
// 关闭文件
fclose(file);
return 0;
}本题详细解读
fwrite 函数
fwrite 函数用于将数据写入文件。其原型如下:
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr:指向要写入数据的缓冲区的指针。size:每个数据项的大小(以字节为单位)。nmemb:要写入的数据项的数量。stream:指向 FILE 对象的指针,该对象标识了要写入的文件流。
fwrite 返回成功写入的数据项数量。如果返回值小于 nmemb,则表示发生了错误或到达了文件末尾。
fread 函数
fread 函数用于从文件中读取数据。其原型如下:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
ptr:指向存储读取数据的缓冲区的指针。size:每个数据项的大小(以字节为单位)。nmemb:要读取的数据项的数量。stream:指向 FILE 对象的指针,该对象标识了要读取的文件流。
fread 返回成功读取的数据项数量。如果返回值小于 nmemb,则表示发生了错误或到达了文件末尾。
示例代码解析
写入文件:
- 使用
fopen以二进制写入模式 ("wb") 打开文件。 - 使用
fwrite将字符串"Hello, World!"写入文件。 - 关闭文件。
- 使用
读取文件:
- 使用
fopen以二进制读取模式 ("rb") 打开文件。 - 使用
fread从文件中读取数据到缓冲区。 - 在缓冲区末尾添加字符串结束符
\0,以便正确打印字符串。 - 打印读取的数据。
- 关闭文件。
- 使用
通过这个示例,你可以看到如何使用 fwrite 和 fread 进行文件的读写操作。