#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
基本上只打印出我放入的任何文字。
答案 0 :(得分:3)
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')
并删除strlen
,正如Jonathan Leffler在评论中提到的那样。