在C中使用命令行参数

时间:2018-02-25 23:26:46

标签: c command-line-arguments

我有以下代码,我尝试访问命令行参数但我无法这样做。

#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▒这是一个奇怪的意外符号。有人可以告诉我为什么这不起作用吗?

3 个答案:

答案 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来比较指针所指向的对象的内容。