[英]scanf for string and number in C
我一直在嘗試使用scanf()讀取字符串和整數。 它工作正常,但是我無法檢查輸入是否正確。
char command[6];
int cmd_num;
scanf("%5s %d", command, &cmd_num);
對於讀取正確的輸入,它工作正常,我可以通過strcmp檢查字符串是否正確 。 我試圖通過isdigit()函數檢查數字,但是由於空格,我無法正確檢查數字,但是我不確定它是如何工作的。
我嘗試用Google搜索它,我玩過[^ \\ n],但仍然不起作用。 任何人都可以啟發我scanf的工作原理嗎?
我認為解決方案是,如果我能確切告訴scanf讀什么-> string(space)integer。 是否可以使用正則表達式或任何其他方式來獲取它?
我基本上需要的是scanf讀取該行以識別字符串,然后檢查其后是否也有數字。
另一個問題是,只要用戶提供輸入,我就需要讀取輸入,我嘗試將getchar用於while循環,只要char不是'\\ n',就重復一次,但這會在開始,但是如果我給它提供EOF條件,即使有多個換行符,它也永遠不會結束。 我想它也可能受scanf的限制,但是我不確定到底是怎么回事,這個論壇上的線程無法給我答案。
這不會進行:
while ( ( c = getchar() ) != '\n')
{
//code
}
無論換行符如何,都將繼續進行:
while ( (c = getchar() ) != EOF )
{
//code
}
您無需檢查數字是否為數字,而isdigit()
用於檢查ascii值是否為0
到9
之間的數字。
要檢查scanf()
成功並且輸入正確,因此cmd_num
的值正確,並且是從輸入中讀取的整數,您必須檢查scanf()
的返回值。
它返回匹配格式說明符的數量。 你有兩個
if (scanf("%5s%d", command, &cmd_num) == 2) // this means it's correct
// ^ your code is missing the address of operator
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.