1

我是 C 语言的初学者。在我的程序中,用户将通过命令行添加一个参数。该参数将是一个字符串,例如“你好,你好吗”。我想从这个字符串中读取字符后的字符。该字符串的大小未知。所以执行程序的例子(在 Windows 中)是:测试“你好,你好吗”

就像是

#include <stdio.h>

int main()
{
  char c;  

  while ((c = getchar()) != EOF)
    putchar(c);
  return 0;
}

字符 c 应该从输入字符串中读取,这是我做不到的。我希望我说清楚了。

感谢您的帮助。

4

2 回答 2

1

getchar从标准输入读取,因此您的程序所做的就是从标准输入逐字符读取,并将它们打印到标准输出。有一个错误,你应该声明cint,因为EOF通常是-1


但是,您正在尝试打印命令行参数。要做到这一点,您不需要逐个字符地进行操作。您需要使用main带有如下参数的版本:

int main(int argc, char* argv[])

当你调用程序test "Hello, how are you"时,argv[1]已经是参数字符串了Hello, how are you。您可以直接使用此字符串。

我不会给你代码,你可以printf用来打印字符串。如果您想获取每个字符,请使用循环从字符串中获取它argv[1]

于 2013-10-05T07:57:50.873 回答
-1

C 中的命令行参数被传递给主函数。您必须使用以下签名声明主函数:

int main(int argc, char* argv[])

然后argc是命令行参数的数量,argv是包含每个参数的字符串数组。

然后,您可以使用简单的循环访问每个字符:

int i;
for (i = 0; argv[1][i] != 0; i++) {
    char c = argv[1][i];
    // Use c as you need
}
于 2013-10-05T07:56:01.607 回答