如何计算 C 语言文本文件中每行的字数



我希望能够逐行读取文件并计算每行中有多少个单词。这是我到目前为止所拥有的:

int countWords(char* filename)
{
int wordCount=0;
int lineCount=0;
FILE *ptr_file;
char buf[1000];
ptr_file = fopen(filename,"r");
if (!ptr_file) {
return 1;
}
while (fgets(buf,1000,ptr_file) != NULL) {
int len = strlen(buf);
for(int x=0; x<len; x++) {
if (buf[x]!=' ' && buf[x+1]==' '){
wordCount++;
}
else if (buf[x]=='n') {
lineCount++;
printf("Line %d: %d words", lineCount, wordCount);
wordCount=0;
}
printf("%d",wordCount);
}
}
fclose(ptr_file);
return 0;
}

我对 C 很陌生,所以仍然习惯整个指针的事情。当我运行这个程序时,我没有得到任何输出。这是我正在寻找的输出类型:

Line 1: 3 words
Line 2: 5 words
...

请使用 GCC 编译以下代码(gcc test.c -o test(:

#include <stdio.h>
#include <string.h>
main() {
int wordCount=0;
int lineCount=0;
FILE *ptr_file;
char buf[1000];
ptr_file = fopen("test.txt", "r");
if (!ptr_file) {
return 1;
}
while (fgets(buf,1000,ptr_file) != NULL) {
int len = strlen(buf);
int x;
for(x=0; x<len; x++) {
if (buf[x+1]==' '){
wordCount++;
}else if (buf[x]=='n') {
lineCount++;
wordCount++;
printf("Line %i: %i wordsn", lineCount, wordCount);
wordCount=0;
}
}
}
fclose(ptr_file);
return 0;
}

测试.txt文件:

word1 word2 word3 word4
word1 word2
word1
word1 word2 word3 word4 word5

输出:

Line 1: 4 words
Line 2: 2 words
Line 3: 1 words
Line 4: 5 words
Line 5: 1 words

当然,您需要处理代码中的最后一行

最新更新