• ベストアンサー

エラーがでてしまいます

以下のプログラムなのですが、引数を与えると下のようなエラーになります。 #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 で終了しました どうしたらよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

tyobi@tyobi-laptop:~$ ./a.out diary copy が、正しいコマンドのうちかたですが、 その結果が、どのようになることを期待していますか。 copyという名のファイルができていませんか? それが、できていればOKだと思いますが。 このプログラムが、正しく動作したとき、 "正常におわりました"・・というようなメッセージはださずに、 そのまま、おわるような作りになっていますよ。

szatmari
質問者

お礼

回答ありがとうございます。 実行ファイルa.outの直後に引数を置くのは知りませんでした。 たしかに、失敗したか成功したかを知るためにメッセージを 最後に残すのは大切ですね。

その他の回答 (2)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

a.outの実行には ./a.out のように先頭に ./ が必要かもしれません

szatmari
質問者

お礼

ご指摘ありがとうございます。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

(1)gcc test.c と打って下さい。 エラーがなければ、a.outという実行形式のファイルが出来ます。 そしたら (2)a.out diary copy と打って下さい。 もし、プログラムが正しいなら、あなたの期待した結果になります。 (1)(2)のどちらかでエラーがでたら、再度質問し直して下さい。

szatmari
質問者

お礼

回答ありがとうございます。 1は出来ました。実行形式のファイルは作成されます。 a.out だとプログラムどおりに入力エラーですとなりました。 tyobi@tyobi-laptop:~$ ./a.out 入力エラーです。 そしてa.out diary copyだと、何もおこらずそのまま tyobi@tyobi-laptop:~$ ./a.out diary copy tyobi@tyobi-laptop:~$ となりました。やはり上手くいきません。

関連するQ&A

専門家に質問してみよう