如何从命令行参数读取char之后的char?

时间:2013-10-05 07:50:39

标签: c windows string command-line

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

这样的东西
#include <stdio.h>

int main()
{
  char c;  

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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


但是,您正在尝试打印命令行参数。要实现这一点,您不需要逐个字符地完成它。您需要使用带有以下参数的main版本:

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

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

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

答案 1 :(得分:-1)

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

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
}