我是C的初学者。在我的程序中,用户将通过命令行添加参数。该参数将是一个字符串,例如“你好,你好吗”。我想从这个字符串中读取char之后的char。此字符串的大小未知。所以执行程序(在Windows中)的例子是:测试“你好,你好吗”
像
这样的东西#include <stdio.h>
int main()
{
char c;
while ((c = getchar()) != EOF)
putchar(c);
return 0;
}
字符c应该从输入字符串中读取,这是我无法做到的。 我希望我说清楚。
感谢您的帮助。
答案 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
}