我们可以使用两种不同的方法来读取同一代码块中的文件吗



//我从文件中读取单词、字符、空格和新行的方法//但当我运行它时,只有上面的while被执行,如果我先放下面的whileloop,//只有它被执行。简而言之,只执行一个while循环//我该如何处理

#include<stdlib.h>
#include<string.h> 
int count_items(FILE *f);
// MAIN CODE
int main()
{ 
printf("-------Programm to count_items in a file-------n");
FILE *f = fopen("sample.txt","r");
count_items(f);
fclose(f);
return 0; 
} 
//FUNCTION TO COUNT NUMBER OF ITEMS IN A FILE
int count_items(FILE *f)
{
int word_count,line_count,white_count,char_count;
char sbuff[100],cbuff;
// **Method I`m using to read characters from a file..**
while((cbuff=getc(f))!=EOF)
{
char_count++;
if(cbuff=='n')
{
line_count++;
}
if(cbuff==' ')
{
white_count++;

}
} 
while(fscanf(f,"%s",sbuff)==1)
{
word_count++;
}
// PRINT THE RESULT
printf("The number of words in file are %dnn",word_count );
printf("The number of characters in file are %dnn",char_count );
printf("The number of whitespaces in file are %dnn",white_count );
printf("The number of lines in file are %dnn",line_count );
return 0;
} ```
// **IT SEEMS THAT I NEED TO FLUSH THE BUFFER BEFORE GOING TO SECOND WHILE LOOP. IF SO , HOW DO I DO THAT?**

我认为这是因为下一个循环试图从文件中读取,而当前位置位于该文件的末尾。您需要从一开始就设置当前位置,例如

fseek(f, SEEK_SET, 0);

有关更多详细信息,请参阅fseek规范。

最新更新