私は問題を抱えている部分だけにコードを削除します。ユーザ入力を使用してファイル名を取得すると、セグメンテーション違反が発生するのはなぜですか?
私は次のことを行うと、コードが
int main() {
FILE * fptr1 = fopen("in.txt", "r");
fread(data, sizeof(char), size, fptr1);
.
.
.
FILE * fptr2 = fopen("out.txt", "w");
fwrite(data, sizeof(char), size, fptr2);
fclose(fptr2);
}
に動作します。しかし、私はfgetsのか、scanf関数を使用して、入力および出力ファイル名を取得するためのfgetsを使用する場合、私はセグメンテーションフォールトを取得します。
int main() {
char inputfile[100];
char outputfile[100];
printf("name of input file: \n");
fgets(inputfile, 100, stdin);
printf("name of output file: \n");
fgets(outputfile, 100, stdin);
.
.
.
}
私はこれをしばらくの間プレイしています。私は、scanf関数を使用してみましたし、入力ファイルとOUTPUTFILEのために割り当てられたサイズを変更してみましたが、私は入れません:
Segmentation fault (core dumped)
'inputfile'と' outputfile'を確認してください。それらは終端 ''\ n' 'を含んでいますか? – timrau
しかし、 '\ n'はセグメンテーションフォルトを引き起こしますか?私が知る限り、セグメンテーションフォルトは、割り当てられたメモリの外のメモリにアクセスすることによって発生します。 '\ n'は名前が間違っているためにファイルを見つけられないようにしてはいけませんか? – user6005857