0

//用来从文件中读取单词、字符、 空格换行符的方法. 简而言之,只有一个 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 %d\n\n",word_count );
    printf("The number of characters in file are %d\n\n",char_count );
    printf("The number of whitespaces in file are %d\n\n",white_count );
    printf("The number of lines in file are %d\n\n",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?**
4

1 回答 1

0

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

fseek(f, SEEK_SET, 0);

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

于 2020-08-12T06:45:25.600 回答