我得到了一個任務來獲取輸入串列并使用它(使用本身并不重要)。輸入將僅以 EOF 結束。我需要獲取一個數字串列并填充一個大小為 n 的陣列。每個數字都用白色字符分隔。我輸入的也需要檢查,因為它不承諾它是有效的。
我有幾種方法可以做到這一點,我想知道什么是最好的以及為什么。(也許我什至沒有考慮過最好的解決方案,所以非常歡迎任何建議)
我用的是ubuntu。
解決方案 1:在檢查白色字符以分隔數字時使用 getchar() 直到 EOF。
解決方案 2:使用 scanf() 做類似的事情:
char str[256];
while (scanf("%s", str) != EOF)
{
// Check the input and add to the array.
}
我認為這是最好的解決方案,但問題是我需要按 control d 兩次才能結束輸入并且它無效。
解決方案 3:使用 fgets() 并讀取緩沖區并使用緩沖區。我認為它使問題復雜化,因為一個整數可以被分成 2 個緩沖區。
感謝所有的幫助者。
uj5u.com熱心網友回復:
一般來說,驗證輸入scanf
是困難的。但是對于像這樣的簡單輸入,您可以執行以下操作:
while( scanf("%d", &n) == 1 ){
/* add n to the array. */
}
if( ferror(stdin) ){
fprintf(stderr, "Read error\n");
} else if( ! feof(stdin) ){
fprintf(stderr, "Invalid input\n");
}
while 回圈將在 EOF 或無效條目時終止。 feof()
將決定輸入流是否關閉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/377230.html
上一篇:tp錢包如何上傳幣logo、錢包收錄、TP收錄、TokenPocket logo、自主更新代幣圖示12月最新方法
下一篇:docker的Xdebug未連接