C编程。使用 fopen fclose 进行文本文件操作

标签 c fopen fclose

我正在打开一个文本文件并处理字数统计功能以计算字数并关闭文件。 接下来,我再次打开同一个文件并将其存储在数组中,并限制数组中的字数计数值。

在这里,如果我像第 1 行和第 16 行那样只使用一次 fopen 和 fclose,我的程序将无法运行。但是如果我打开它(第 1 行)处理它然后关闭它(第 10 行)并再次打开它(第 12 行)进行第二个处理,我的程序就可以运行。这是否意味着 fopen 一次只能处理一个进程,我必须再次打开它才能进行第二个进程?

1. fptrr = fopen(fname,"r"); // open the text file in read mode
2. 
3.  if (fptrr == NULL) {//if file name does not match
4.       printf("Error: No such file or directory");
5.       return -1;
6.     }
7. 
8. wordCount += countWords(fptrr); //run word count function and get the value of total words
9. 
10. fclose(fptrr); // close the file
11. 
12. fptrr = fopen(fname,"r");
13. for(int i=0;i<wordCount;i++){ // define size of loop equal to words in a file
14.    fscanf(fptrr, "%s", fileArray[i]); //scan and store in array
15. }
16. fclose(fptrr);

最佳答案

您可以在文件打开时对其执行任何操作。

我怀疑你的问题是你在一组操作中读到文件的末尾,然后你在读到最后时尝试再次读取文件。寻找 rewind()功能

要倒回到文件的开头,只需在第一个计数词之后调用 rewind(fptrr);。或者,您可以调用 fseek(fptrr, 0L, SEEK_SET) 但 rewind() 更清晰。

请注意,关闭文件并重新打开它会自动重置文件以从头开始读取,这就是您的新版本有效的原因。

关于C编程。使用 fopen fclose 进行文本文件操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46978215/

相关文章:

c - 尽可能安全地在 c 中打开文件

c - 有没有一种标准的方法来使用 Unicode 字符串文件路径进行 fopen?

c - 如果fclose()失败,文件描述符是否仍然打开?

c - fclose() 导致段错误

C 编程数据结构用户输入无法初始化结构类型 Visual Studio

c - 如何实现固定大小的 HashMap ?

c - 如何计算结构的大小?

c++ - CImg 编译器错误

c - 在C中读取和写入文件中的两位数值

c - fclose() 然后是 free()?