1

プログラムは現在何も出力しません。このプログラムは、整数のコマンド ライン値を取得し、再帰的な印刷機能を使用してその回数だけ "Test" を印刷することを意図しています。私は C が初めてで、プログラムが動作しない理由がわかりません。コンパイル エラーは発生しません。(まだ gdb に慣れるために取り組んでいます)

#include <stdio.h>

void myfunc(int num)
{
    if(num <= 0)
    {
        return;
    }
    else
    {
        printf("%s \n", "Test");
        myfunc(num-1);
        return;
    }
}

int main (int argc, char *argv[])
{
    int i;
    i = atoi(argv[0]);
    myfunc(i);
}
4

2 に答える 2

6

int を渡していないため:

i = atoi(argv[0]);
              ^
             argument 0 is name of executable 

あなたの必要性があるかもしれません:

i = atoi(argv[1]);
于 2013-09-05T09:18:34.337 に答える
2

argv[0]実行可能ファイルの名前を保持するため、実行可能ファイルを実行すると:

program.out 1 2

argv[0] will be "program.out", (they are all strings)
argv[1] will be "1",
and argv[2] will be "2".

念のため、argc は argv の要素数を保持するため、この場合はargc will be 3 (integer 3, not string"3").

于 2013-09-05T10:03:31.023 に答える