1

该程序当前不输出任何内容。该程序旨在获取一个整数命令行值,然后使用递归打印功能打印“测试”该次数。我是 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 回答