Cでいくつかの同様の質問がありますが、私の質問には答えられません。
エラー:このようなファイルまたはディレクトリはありません。 ユーザー入力はaFile.txtであり、このファイルがプログラムと同じディレクトリに存在することを確認します。私の連結がOKであると信じて私をリードしても
パス名と変数ファイル名が有効でないfopen
input_file = fopen(".\aFile.txt", "r");<br/>
ITワークス...
、printf("path = %s\n", path);
プリント.\aFile.txt
:
私は手動で変更した場合:
input_file = fopen(path, "r");<br/>
に。 私は間違って何をしていますか?
char path[25] = "./";
char filename[21];
printf("Enter filename, max 20 characters: ");
fgets(filename, 20, stdin);
strcat(path, filename);
strtok(path, "\n"); // FIXED THE ISSUE BY REMOVING THE trailing '\n'
printf("path = %s\n", path);
FILE * input_file;
input_file = fopen(path, "r"); // fopen(".\aFile.txt", "r") works!!!
if (input_file == NULL)
perror("Error");
else {
loader(list, input_file);
fclose(input_file);
printf("list loaded from file succesfully.\n");
}
ほとんどの場合、パス変数に改行文字が含まれている可能性があります(fgetsにはそれが含まれています)。末尾の空白を削除すればうまくいくはずです。 – TheGreatContini
[man fgets](http://linux.die.net/man/3/fgets): "改行が読み込まれた場合は、バッファに保存されます。" – kaylum
確かに、重複しています...あなたがfgets \ n問題について知らなかったら...:p – Chris