我有以下代码,我尝试访问命令行参数但我无法这样做。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv) {
int fd = open("drawing.ppm", O_RDWR | O_CREAT | O_APPEND, 0700);
char colour[] = "0 0 0 ";
if(argv[1] == "red") {
char colour[] = "255 0 0 ";
}
printf("%s\n", &argv[1]);
int date = write(fd, colour, sizeof(colour));
close(fd);
}
当我运行代码时,终端显示1▒
这是一个奇怪的意外符号。有人可以告诉我为什么这不起作用吗?
答案 0 :(得分:2)
一些事情。
首先,main()
的签名是错的,应该是
int main(int argc, char *argv[])
注意argv
是字符串的数组(指针)而不是字符。
其次,你不要检查是否有任何args通过。
像
这样的东西if (argc > 2)
第三,您的打印输出是argv[1]
而不是argv[1]
尝试(argc
检查内部/之后)
printf("%s\n", argv[1]);
答案 1 :(得分:1)
你声明2次颜色变量,注意第二个是if-scope的本地。
答案 2 :(得分:0)
argv[1]
的类型为char*
,您尝试使用对字符串类型变量有用的运算符==
。在这里,您要比较两个指针,实际上是两个内存地址。
您可以尝试使用strcmp
来比较指针所指向的对象的内容。