質問: c言語です。 コマンドライン引数がある場合とない場合を想定してコードを書きたいのですが、ない場合はNULLなのでしょうか? うまく動かないのでどこがダメなのか教えてください。 #include #include int load(){ FILE *fp; fp =fopen("file.txt" , "r"); int x=0; if(fp==NULL){ printf("記録を開始します \n"); return 0; }else{ fscanf(fp ,"%d" , &x); fprintf(stdout , "前回の所持金額 : %d\n" , x);/*試してるだけ*/ } fclose(fp); return x; } void save(int x ){ FILE *fp; fp =fopen("file.txt" , "w"); if(fp==NULL){ printf("error!! \n"); return ; } printf("----------\n"); printf("現在の所持金額\n"); printf("%d円" , x); fprintf(fp , "%d" ,x); fclose(fp); } int main(int argc , char *argv[] ){ int x=0 , y=0 , z=0; z=load(); printf("今回の収入金額 :"); scanf("%d" , &x); printf("1\n"); if(argv[2]!=NULL){ y=atoi(argv[2]); printf("2\n"); }else{ printf("今回の支出金額 :"); scanf("%d" , &y); printf("3\n"); } printf("4\n"); save(x-y+z); return 0; } 動作結果 kadai15_1 100 前回の所持金額 : 9769 今回の収入金額 :100 1 今回の支出金額 :100 3 4 ---------- 現在の所持金額 9769円 kadai15_1 前回の所持金額 : 9769 今回の収入金額 :100 1
回答: コマンドライン引数の数は、argcで判定しましょう。 プログラム名がa.exeの時、 > a argc=1 argv[0]="a" >a b argc=2 argv[0]="a" argv[1]="b" になります。