#include <stdio.h>
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "usage: one file only", argv[0]);
return (1);
} else {
for(int i = 0; i < argc; i++) {
putchar(argv[i]);
}
}
}
比如说我想打印输入
$ gcc -Wall fileabove.c
$ ./a.out abcdefghijlmn
abcdefghijlmn
基本上只要打印出我输入的任何文本。
最佳答案
putchar(argv[i]);
是不正确的,因为
putchar
需要单个字符(类型char
),您传递的是指针(char*
)。应该是puts(argv[i]);
所以正确的密码是:
#include <stdio.h>
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "usage: one file only\n", argv[0]);
return 1;
}
// no need for the else
// you exit program anyway if argc != 2
// makes code more readable
puts(argv[1]);
return 0;
}
如果要逐字符打印:
#include <stdio.h>
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "usage: one file only\n", argv[0]);
return (1);
}
for(size_t i = 0; argv[1][i] != '\0'; ++i)
putchar(argv[1][i]);
putchar('\n');
return 0;
}
编辑将
puts("")
更改为putchar('\n')
,并删除了Jonathan Leffler在评论中提到的strlen
。关于c - 如何通过命令行和C遍历argv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48958065/