【问题标题】:How to read char after char from command line parameter?如何从命令行参数读取字符后的字符?
【发布时间】:2013-10-05 07:50:39
【问题描述】:
我是 C 语言的初学者。在我的程序中,用户将通过命令行添加一个参数。此参数将是一个字符串,例如“你好吗”。我想从这个字符串中读取字符后的字符。该字符串的大小未知。所以执行程序的例子(在 Windows 中)是:测试“你好,你好吗”
类似
#include <stdio.h>
int main()
{
char c;
while ((c = getchar()) != EOF)
putchar(c);
return 0;
}
字符 c 应该从输入字符串中读取,这是我做不到的。
我希望我说清楚了。
感谢您的帮助。
【问题讨论】:
标签:
c
windows
string
command-line
【解决方案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] 中获取它。
【解决方案2】:
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
}