[英]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.