我無法弄清楚如何使代碼工作。假定根據命令行給出的參數,假設打印出問候語。命令行參數
int main (int argc, char *argv[]) {
double testscore;
if (argc == 2) {
printf("Hello, Mr.%s.\n", argv[1]);
}
else if (argc == 3 && argc == testscore) {
testscore = atof(argv[2]);
printf("Hi, Mr.%s, your score is %.1f\n", argv[1], testscore);
}
else {
printf("My name is %s %s.\n", argv[1], argv[2]);
}
}
如果有人提出只有自己的姓氏,終端會打印出...
您好,先生姓氏
...因爲他們只放在一個論據。這工作正常。
我被卡住的部分是當給出的命令行參數是== 3
。如果3個參數給出那麼無論是終端是假設打印出...
嗨,姓氏先生,你的測試成績爲test_score
......或者......
我的名字是first_name last_name。
如果我把在命令行參數只有姓氏和考試成績(史密斯3.4),那麼它打印出來(例如使用姓史密斯),那麼它打印出...
我的名字是史密斯3.4
然而,它的名字和姓氏(約翰史密斯)的名字。這給...
我的名字是約翰史密斯。
我不想要的答案,我只是想什麼,我就如何解決它做錯了和提示。
由託尼·加迪斯 「開始接觸C++」,對不對?無論哪種方式,謝謝你沒有直接要求代碼。新手之間很少見。 – CodeMouse92
這是一個簡單的錯字。您正在測試'argc == testscore',它正在測試**對照分數的參數**數量。因此,第二個條件永遠不會評估爲真(除了一些奇怪的僥倖)。 – CodeMouse92
'testscore'是未初始化的,因此在設置它之前不能進行有用的比較。你可能應該嘗試用'atof()'('strtod()'''將'argv [2]'轉換爲更好 - 但難以正確)並將結果與0.0進行比較。這有點懶,但假設如果結果爲零,可能是合理的,'argv [2]'不包含數字,所以把它當作一個名字。 (一個更徹底的工作會使用'strtod()'並檢查是否找到一個數字,例如0)。您可能會想如果程序沒有傳遞命令行參數,或者傳遞了20個參數,會發生什麼情況。你應該檢查嗎? –