の標準プロトタイプは次のmain()
ようになります。
int main(int argc、char * argv []);
あなたはmain()
たった1つの引数であなたを宣言しましargv
た。しかし、システムは最初の引数として引数の数を渡します。
単一の引数(ファイルfile.txt
)を指定すると、argc
は1に設定されます。ただし、プログラムは整数1をとして使用しようとしていますchar **
。それはバスエラーを与えます。
動作するプログラムの編集バージョンは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE *file;
if (argc != 2)
{
fprintf(stderr, "Usage: myprogram <filename>\n");
exit(1);
}
file = fopen(argv[1], "r");
if (file == NULL) {
fprintf(stderr, "Cannot open file.\n");
exit(2);
}
exit(0); // status 0 to signal no error
}
変更点:
#include <stdlib.h>
の宣言を取得するために追加しましたexit()
。
引数の数を確認し、正しくない場合はUsage:文字列を出力します。
エラーメッセージstderr
を標準出力の代わりに印刷しました。
プログラムが正常に終了していることを明確にするためにに変更return 1
しました。exit(0)