2
我正在嘗試計算從argv指定的文件中可能存在的行數和字符數。但是由於某種原因,當我點擊while循環時會出現分段錯誤。該程序運行良好,沒有while循環,但它只經過一次。我的while循環中的分段錯誤
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if(argc != 2) {
return 0;
}
FILE *fp;
char c;
int lines = 0;
int chs = 0;
fp = fopen(argv[1], "r");
//Segmentation Fault happens here on the while loop
while((c = fgetc(fp)) != EOF) {
if(c == '\n') {
lines += 1;
}
else {
chs += 1;
}
}
printf("Charaters: %d\n", chs);
printf("lines: %d\n", lines);
if(fp){
fclose(fp);
}
return 0;
}
如果'fopen()函數'進入循環前成功(!'FP = NULL')你有沒有檢查。將'NULL'指針傳遞給'fgetc()'會導致未定義的行爲。 – Peter
'fgetc'有意返回一個'int'。 – Olaf
問題是我打開一個空文件。所以我應該檢查一下它是否爲空。 – Sharpbombs