推荐答案
// www.javascriptcn.com code example
#include <stdio.h>
int main() {
FILE *file = fopen("example.txt", "r");
if (file == NULL) {
perror("Failed to open file");
return 1;
}
// 读取文件内容
int ch;
while ((ch = fgetc(file)) != EOF) {
putchar(ch);
}
// 使用 rewind 函数将文件指针重置到文件开头
rewind(file);
// 再次读取文件内容
while ((ch = fgetc(file)) != EOF) {
putchar(ch);
}
fclose(file);
return 0;
}本题详细解读
rewind 函数的作用
rewind 函数用于将文件指针重置到文件的开头。它相当于调用 fseek(file, 0, SEEK_SET),但不会返回任何值。
函数原型
void rewind(FILE *stream);
stream:指向FILE对象的指针,该对象标识了一个打开的流。
使用场景
rewind 函数通常用于需要多次读取文件内容的场景。例如,在读取完文件内容后,如果需要再次从头读取文件,可以使用 rewind 函数将文件指针重置到文件开头,而不需要重新打开文件。
注意事项
rewind函数不会返回任何值,因此无法通过返回值来判断操作是否成功。- 如果文件指针已经位于文件开头,调用
rewind不会有任何效果。 - 在使用
rewind之前,确保文件已经成功打开,否则可能会导致未定义行为。
示例代码解析
- 打开文件
example.txt以只读模式。 - 使用
fgetc函数读取文件内容并输出到控制台。 - 调用
rewind函数将文件指针重置到文件开头。 - 再次使用
fgetc函数读取文件内容并输出到控制台。 - 关闭文件。
通过这个示例,可以看到 rewind 函数如何在不重新打开文件的情况下,重新读取文件内容。