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