我一直在尋找幾個小時,似乎無法找到我所追求的答案。如果結果是重複,我很抱歉。解析用戶輸入的兩個值
現在我的程序要求用戶輸入2個整數。例如
Prompt: 15 24
我去後,他將其他問題,所以人都提到scanf
和fgets
。但是,每個人都需要一次輸入一個號碼,而我希望從一個輸入中輸入兩個號碼。
我的其他問題是錯誤檢查。他們是否實際輸入了一個整數或某些無效的東例如:
Prompt: Hello World
Prompt: foo 5
Prompt: 4 bar
Prompt: foo
Prompt:
代碼:
int get_input(int* x, int* y) {
char* p, buf[LINE_MAX];
int n1, n2;
printf("Prompt: ");
fgets(buf, sizeof(buf), stdin);
n1 = strtol(buf, &p, 10);
if (p == buf || *p != '\n') {
return 0;
}
n2 = strtol(buf, &p, 10);
if (p == buf || *p != '\n') {
return 0;
}
*x = n1;
*y = n2;
return 1;
}
int main(int argc, char** argv) {
int x, y;
if (get_input(&x, &y)) {
printf("Worked: %d %d\n", x, t);
} else {
printf("Invalid\n");
}
return 0;
}
一些錯誤檢查的缺失,但真的很憋屈得到第二個值(如果有)。還要檢查是否有超過2個值。 很多幫助,將不勝感激。
引用這讓我這麼遠:
提示:'n2 = strtol(p,&p,10)'。 – zwol
DV甚至沒有閱讀'scanf'的手冊頁。 – Olaf
@Olaf我嘗試過'scanf',但我只能讓它工作以獲得有效的輸入。上面提到的任何無效輸入都會給我一個奇怪的輸出,我感到很困惑。另外提到的SO問題說不使用'scanf',所以我爲'fgets' @zwol做了改變,但在嘗試一些有效的時候無法使它工作。你能否詳細說明一下? –