• 締切済み

C言語で分からないところがあるのですが・・・

すみません。C言語で分からないところがあったので来ました。 ユーザから数字を任意の数だけ受け取って、その数字とその和を表示するプログラムです。atoiなる関数、そしてコマンドライン引数というのを使って考えてみた結果を下に書きましたので、どなたか修正してください。お願いします。 実行結果(のイメージ図) 20 39 4 sum 20 39 4 63 途中までのソースコードです。 #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc,char *argv[]) { int sum; int n,i; printf("How many numbers INPUT?: "); scanf("%d", &n); for(i = 0; i <= n; i++){ atoi(argv[i]); } sum = printf("%d",sum); return 0; }

みんなの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

argcには「実行ファイル自身を含む引数の数」が入ります。 ですから「数値をいくつ入れたか」の問いは無駄です。argc-1でわかります。 また、同様にargv[0]には実行ファイル自身の名前が入っていますから、これは普通は数値変換できませんし出来たとしても意図しない動作でしょう。 あと、使う関数はatoiよりもsscanfかstrtolの方がいいですね。 sumは最初に0初期化した上で、変換結果を足しこんでいけばいいだけですよ。 上記がちゃんと理解できれば簡単に修正できるでしょうから、コードは提示しません。

回答No.3

コマンドライン引数というのを使って考えてみた結果ですか(?!)。 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int sum=0; while(--argc) sum+=atoi(argv[argc]); printf("sum= %d\n", sum); return 0; } ----- 実行結果 ----- ./a.out 20 39 4 sum= 63

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

>printf("How many numbers INPUT?: "); >scanf("%d", &n); これらの文は、何のために必要なんですか?

  • kerneru
  • ベストアンサー率37% (45/120)
回答No.1

下の方の sum = なんか抜けてない?