- ベストアンサー
エラーがでてしまいます
以下のプログラムなのですが、引数を与えると下のようなエラーになります。 #include<stdio.h> #include<stdlib.h> int main(int argc, char** argv) { FILE *in ,*out; unsigned char ch; if(argc != 3) { printf("入力エラーです。\n"); exit(1); } if((in = fopen(argv[1],"rb")) == NULL) { printf("入力ファイルが開けません。\n"); exit(1); } if((out = fopen(argv[2],"rb")) == NULL) { printf("出力ファイルが開けません。\n"); exit(1); } while(!feof(in)) { ch = fgetc(in); if(!feof(in)) fputc(~ch,out); } fclose(in); fclose(out); return 0 ; } tyobi@tyobi-laptop:~$ gcc test.c diary copy diary: file not recognized: File format not recognized collect2: ld はステータス 1 で終了しました どうしたらよいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
tyobi@tyobi-laptop:~$ ./a.out diary copy が、正しいコマンドのうちかたですが、 その結果が、どのようになることを期待していますか。 copyという名のファイルができていませんか? それが、できていればOKだと思いますが。 このプログラムが、正しく動作したとき、 "正常におわりました"・・というようなメッセージはださずに、 そのまま、おわるような作りになっていますよ。
その他の回答 (2)
- php504
- ベストアンサー率42% (926/2160)
a.outの実行には ./a.out のように先頭に ./ が必要かもしれません
お礼
ご指摘ありがとうございます。
- tatsu99
- ベストアンサー率52% (391/751)
(1)gcc test.c と打って下さい。 エラーがなければ、a.outという実行形式のファイルが出来ます。 そしたら (2)a.out diary copy と打って下さい。 もし、プログラムが正しいなら、あなたの期待した結果になります。 (1)(2)のどちらかでエラーがでたら、再度質問し直して下さい。
お礼
回答ありがとうございます。 1は出来ました。実行形式のファイルは作成されます。 a.out だとプログラムどおりに入力エラーですとなりました。 tyobi@tyobi-laptop:~$ ./a.out 入力エラーです。 そしてa.out diary copyだと、何もおこらずそのまま tyobi@tyobi-laptop:~$ ./a.out diary copy tyobi@tyobi-laptop:~$ となりました。やはり上手くいきません。
お礼
回答ありがとうございます。 実行ファイルa.outの直後に引数を置くのは知りませんでした。 たしかに、失敗したか成功したかを知るためにメッセージを 最後に残すのは大切ですね。