#include <stdio.h>
#define MAX 1000
int line_counter (FILE *file, char buf[]);
int main(int argc, char *argv[]) {
FILE *ptr_file;
char buf[MAX];
ptr_file = fopen("alice-eg.txt", "r");
if (!ptr_file) {
return 1;
}
int count = 0;
while (fscanf(ptr_file, "%s", buf) == 1) {
printf("%s", buf);
if (buf == '\n') {
return count;
}
else {
count += 1;
}
}
printf("The number of words in this line is: %d", count);
return 0;
}
我想做一些与此相关的事情,但我不知道如何让它工作,因为buf只是一个字母数组的指针(纠正我,如果我错了我刚开始用C而我对指针的理解还是很糟糕的。
答案 0 :(得分:0)
fscanf
将文件中的行(由ENTER分隔)写入buff数组,因此如果它将读取空行buff[0] = '\n'
,那么这应该是你的条件。
其次:
while (fscanf(ptr_file, "%s", buf) == 1)
错误,因为fscanf返回读取字符的数量,因此对于行“abcd”形成文件,它将返回4并且您的循环将立即停止而不是读取整个文件,因此您的条件应该是:
while (fscanf(ptr_file, "%s", buf) != EOF)
因为fscanf会在到达文件末尾时返回EOF