0

我正在尝试在 C 中运行主要方法,但遇到了麻烦。这就是我所拥有的

int main(int argc, char *argv[])
{
    if(argc == 0)
        return 0;
    printf("%s \n", argv[0]);
    main(--argc,++argv);
}

在命令中我写这个,./main 玫瑰是红色的!

但它没有运行,我相信它会在屏幕上打印这个

r

s

e

s

一个

r

e

r

e

d

我对么?

4

3 回答 3

4

您看到的输出对我来说似乎正确。

因此,让我们尝试运行您的代码。

[12:21pm][wlynch@watermelon /tmp] ./foo 
./foo 
[12:21pm][wlynch@watermelon /tmp] ./foo roses are red
./foo 
roses 
are 
red 
[12:21pm][wlynch@watermelon /tmp] ./foo "roses are red"
./foo 
roses are red 
于 2013-04-30T17:23:19.073 回答
1

argv[0] 将保存程序名称,argv[1] 将保存玫瑰等等。要打印这些字符串,我建议您使用类似的东西:

#include <stdio.h>

int main(int argc, char *argv[])
{
  int i;
  for (i = 1; i < argc; i++)
    printf("%s \n", argv[i]);
  return 0;
}
于 2013-04-30T17:21:57.853 回答
-3

注意:您的函数不返回任何值。Main 应该无条件地返回 int:

int main(int argc, char *argv[])
{
    if(!argc)
        return 0;
    printf("%s\n", argv[0]);
    return main(--argc,++argv);
 /* ^^^^^^ */
}

顺便说一句:(如果它被称为./main roses are red!)它会打印:

./main
roses
are
red!
于 2013-04-30T17:25:05.857 回答