簡體   English   中英

用scanf查找C中的字符串和數字

[英]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值是否為09之間的數字。

要檢查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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM