C中的递归打印功能

时间:2013-09-05 09:16:51

标签: c recursion

程序当前没有输出任何内容。该程序用于获取整数命令行值,然后使用递归打印功能打印多次“测试”。我是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);
}

2 个答案:

答案 0 :(得分:6)

因为你没有传递int:

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

可能是您的需要:

i = atoi(argv[1]);

答案 1 :(得分: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").