你的循環不會終止,因爲你沒有做與循環內的任何文件。
而不是使用feof
來控制循環,我會建議使用getline()
。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fp;
int main() {
fp=fopen("C:\\Users\\Alan\\Desktop\\text.txt","r");
int i = 0;
char *line = NULL;
size_t len = 0;
while (getline(&line, &len, fp) != -1)
i++;
free(line);
fclose(fp);
printf("The Number Of Sentence In That File: %d\n",i);
}
注意:在這種情況下line
設置爲NULL
和len
設置0
,因此getline()
將分配一個緩衝器,用於存儲所述line
。在程序返回之前應該釋放這個緩衝區。
更新
您可以使用getline
的返回值,如果你也想知道字符的文件數:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fp;
int main() {
fp=fopen("C:\\Users\\Alan\\Desktop\\text.txt","r");
int i = 0;
int j = 0;
int read = 0;
char *line = NULL;
size_t len = 0;
while ((read = getline(&line, &len, fp)) != -1) {
i++;
j += read;
}
free(line);
fclose(fp);
printf("The Number Of Lines In That File: %d\n", i);
printf("The Number Of Chars In That File: %d\n", j);
}
所有您在循環做的是'我++; '。你想做什麼?閱讀文件,也許? –
它究竟如何不能正常工作? – ameyCU