我剛剛開始學習C的課程,並在命令行參數中遇到問題。分配是這樣的(還有更多,但是這是關於在開始的命令行參數的部分):
- 您的程序必須接受一個命令行參數,一個非負整數。
- 如果您的程序在沒有任何命令行參數或多個命令行參數的情況下執行,您的程序應打印出您選擇的錯誤消息並返回1.
- 您可以假設,如果用戶確實提供了一個命令行參數,它將是一個非負整數(例如1)。不需要檢查它確實是數字。命令行參數條件pset2凱撒
所以我想出了這個代碼:
#include <stdio.h>
#include <cs50.h>
#include <string.h>
int main(int key, string plain[]) {
if (key < 0 || plain[key] > 1)
{
printf("error\n");
return 1;
}
else
等..代碼繼續。
現在我已經嘗試了幾件事情,但是我正在碰壁。編譯器不想接受我提出的if條件,並說指針和整數之間有一個比較錯誤指的是作業列表中的粗體條件。所以我明白命令行參數的argv部分是用戶輸入的字符串數組。所以我的想法是告訴編譯器,當用戶給出多個字符串時,它應該給出錯誤消息,所以我寫了「plain [key]> 1)」。或者,我對命令行參數的理解完全在這裏?謝謝。
'plain [key]'將是'string'不是'int' –
'plain [key]'可能是越界的。你應該檢查傳遞給'main'的參數。 – Gerhardh
C沒有'string'類型。那是什麼? 'main'的簽名應該是'int main(int,int * [])',或者最後一個參數可以是'int **',它們是相同的。 – Olaf