推荐答案
// www.javascriptcn.com code example
#include <stdio.h>
int main() {
FILE *file;
char buffer[100];
// 打开文件
file = fopen("example.txt", "r+");
if (file == NULL) {
perror("Error opening file");
return 1;
}
// 使用 fgets 读取文件内容
if (fgets(buffer, sizeof(buffer), file) != NULL) {
printf("Read from file: %s", buffer);
}
// 使用 fputs 写入文件内容
fputs("Hello, World!", file);
// 关闭文件
fclose(file);
return 0;
}本题详细解读
fgets 函数
fgets 函数用于从指定的文件流中读取一行字符串。其函数原型如下:
char *fgets(char *str, int n, FILE *stream);
str:指向一个字符数组的指针,用于存储读取的字符串。n:要读取的最大字符数(包括结尾的空字符\0)。stream:指向文件流的指针,通常是通过fopen打开的文件。
fgets 会从 stream 中读取最多 n-1 个字符,并在读取的字符串末尾自动添加一个空字符 \0。如果遇到换行符 \n 或文件结束符 EOF,读取会提前结束。
fputs 函数
fputs 函数用于将字符串写入指定的文件流。其函数原型如下:
int fputs(const char *str, FILE *stream);
str:要写入的字符串。stream:指向文件流的指针,通常是通过fopen打开的文件。
fputs 会将 str 指向的字符串写入到 stream 中,不包括字符串末尾的空字符 \0。如果写入成功,返回非负值;如果发生错误,返回 EOF。
示例代码解析
- 打开文件:使用
fopen打开文件example.txt,模式为"r+",表示以读写模式打开文件。 - 读取文件内容:使用
fgets从文件中读取最多 99 个字符(因为buffer的大小为 100),并将读取的内容存储在buffer中。 - 写入文件内容:使用
fputs将字符串"Hello, World!"写入文件。 - 关闭文件:使用
fclose关闭文件,释放资源。
注意事项
- 在使用
fgets和fputs时,确保文件已成功打开,否则可能会导致程序崩溃或未定义行为。 fgets读取的字符串可能包含换行符\n,因此在处理读取的字符串时需要注意。fputs不会自动添加换行符,如果需要换行,需手动添加\n。