簡體   English   中英

在C中使用命令行參數

[英]Using command line arguments in C

我在嘗試訪問命令行參數的地方有以下代碼,但是這樣做很麻煩。

#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▒ ,這是一些奇怪的意外符號。 有人可以告訴我為什么這不起作用嗎?

一些東西。

首先,您對main()簽名是錯誤的,應該是

int main(int argc, char *argv[])

注意argv如何是字符串而不是char的數組(指針)。

其次,您無需檢查是否傳遞了任何參數。

就像是

if (argc > 2)

第三,您的打印輸出是argv[1]而不是argv[1]

嘗試(在argc檢查中/之后)

printf("%s\n", argv[1]);

您聲明2次color變量時要注意,第二個是if-scope的局部變量。

argv[1]的類型為char* ,您嘗試與運算符==一起使用,這對字符串類型的變量很有用。 在這里,您正在比較兩個指針,實際上是兩個內存地址。

您可以嘗試使用strcmp比較指針所指向的對象的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM