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;
}
あなたはチェックしていません。 'NULL'ポインタを' fgetc() 'に渡すと、未定義の動作が起こります。 – Peter
'fgetc'は意図的に' int'を返します。 – Olaf
問題は、私がnullファイルを開いていたことでした。だから私はそれが最初にnullであったかどうかを調べたはずです。 – Sharpbombs