我理解指針(我認爲),並且我知道C中的數組作爲指針傳遞。我假設這適用於main()
命令行參數爲好,但對我的生活,當我運行下面的代碼,我不能做的命令行參數的簡單比較:與C命令行參數
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int numArgs, const char *args[]) {
for (int i = 0; i < numArgs; i++) {
printf("args[%d] = %s\n", i, args[i]);
}
if (numArgs != 5) {
printf("Invalid number of arguments. Use the following command form:\n");
printf("othello board_size start_player disc_color\n");
printf("Where:\nboard_size is between 6 and 10 (inclusive)\nstart_player is 1 or 2\ndisc_color is 'B' (b) or 'W' (w)");
return EXIT_FAILURE;
}
else if (strcmp(args[1], "othello") != 0) {
printf("Please start the command using the keyword 'othello'");
return EXIT_FAILURE;
}
else if (atoi(args[2]) < 6 || atoi(args[2]) > 10) {
printf("board_size must be between 6 and 10");
return EXIT_FAILURE;
}
else if (atoi(args[3]) < 1 || atoi(args[3]) > 2) {
printf("start_player must be 1 or 2");
return EXIT_FAILURE;
}
else if (args[4][0] != 'B' || args[4][0] != 'b' || args[4][0] != 'W' || args[4][0] != 'w') {
printf("disc_color must be 'B', 'b', 'W', or 'w'");
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
以下參數:othello 8 0 B
所有的比較工作除了最後 - 檢查字符匹配。我嘗試使用strcmp()
,就像我在第二次比較中所做的那樣,將「B」,「b」(等等)作爲參數,但那不起作用。我也嘗試將args[4][0]
改爲char
,那也沒有奏效。我嘗試瞭解引用args[4]
,並且我也嘗試了將該值進行鑄造。
輸出:
args[0] = C:\Users\Chris\workspace\Othello\Release\Othello.exe
args[1] = othello
args[2] = 8
args[3] = 1
args[4] = B
disc_color must be 'B', 'b', 'W', or 'w'
我真不明白這是怎麼回事。上次我用C語言寫了一些東西是在一年前,但是我記得操縱角色有很多麻煩,我不知道爲什麼。我錯過了什麼是顯而易見的事情?
問題:我如何在args[4]
比較值的字符(即ARGS [4] = 'B' _或_ ARGS [4] [0] ='! B')。我只是有點失落。
也許這不是一個字符串,而是一個字符。 Strcmp比較字符串。您可以使用'A'=='A'來比較字符。 – Reinherd
據我所知,'args [4]'的值是一個字符串。因此,取該字符串的'index 0'值(即args [4] [0]')應該有效,因爲比較值都是字符,但似乎並非如此。 –
顯然我正確地進行了比較,但是聲明的邏輯錯誤。典型的我,但感謝看看我的問題:) –