c語言如何限制非法輸入,C語言程式設計問題,求高手解答遇到輸入非法字元時,怎麼處理。

時間 2021-08-30 09:45:15

1樓:匿名使用者

風輕的做法不太完全,在輸入11a22時,會將a之後的捨棄而認為是正確的整形11.

fun()

ch[++i] = (char)getchar();

}sscanf(ch, "%d", &input);

printf("%d",input);

fflush(stdin);

return input;

}11a11 error!

1111 1111 返回1111

2樓:匿名使用者

c語言中大部分自帶的方法都有返回值,像scanf方法如果輸入正確的話,它會返回一個正整數,所以你可以通過它來判斷,如果輸入不正確的話它返回是0,你就可以通過這個判斷是否為非法輸入。

scanf()函式有返回值且為int型。

scanf()函式返回的值為:正確按指定格式輸入變數的個數;也即能正確接收到值的變數個數。

scanf("%d%d", &a, &b);

如果a和b都被成功讀入,那麼scanf的返回值就是2如果只有a被成功讀入,返回值為1

如果a和b都未被成功讀入,返回值為0

如果遇到錯誤或遇到end of file,返回值為eof。

3樓:雲淡風輕

int n;

while(scanf("%d",&n)==0)

c語言程式設計問題,求高手解答遇到輸入非法字元時,怎麼處理。

4樓:

#include

#include

#include

#include "regex.h"

const int max_len = 1000;

/*去掉字串兩端的空格*/

char * trimstring(char guessstring)

/*尾部空格*/

while( rear >= 0 &&

(guessstring[rear] == ' ' || guessstring[rear] == ' ' )

)for(i = head ,k = 0; i <= rear ; i++ , k++)

result[k] = '\0';

return result;}/*

提取字串中的【正整數】。

如果是恰好包含【一個正整數】的字串(正數前後可以有任意個空格,正數可以有多餘的前導0),則返回這個正數;

如果是一個空串,則返回 -1

如果包含非數字字元,則返回-2

*/int transstringtonum(char guessstring)

// 檢查是否有非數字字元

for(i = 0 ; trimguessstring[i] != '\0' ; i ++)

}// 字串轉換成數字

for(i = 0 ,num = 0 ; trimguessstring[i] != '\0' ; i++)

return num;

}int main()

if(guessnum == -2 )

if(guessnum>num)

else if(guessnumnum) else if(guessnum

就知道錯了。這時if(guessnum = num)永遠都會被執行

因為這是一個【賦值語句】而不是【邏輯語句】,且 num 的值是恆正的

*/else if(guessnum == num)

}printf("do you want to continue(y/n or y/n)?");

/* 用 getch() 取代scanf ,不易出錯

因為 getch()只能輸入一個字元

而 scanf 可以讀入多個字元,而且要回車

*/fflush(stdin);

reply = getch();

}while((toupper(reply)=='y'));

printf("the game is over!\n");

return 0;}/*

輸入合法數字示例(數字包含在一對""中):

"123"

" 123"

"123 "

" 123 "

" 0000123 "

上面的結果都是輸入正數: 123*/

5樓:軍神再現

可以採用如下語句

while((scanf("%d",&x))==1)

{}只有輸入一個數字時,才進入主體語句

C語言中如何控制非法輸入 c語言如何限制非法輸入

c語言中大部分自帶的方法都有返回值,像scanf方法如果輸入正確的話,它會返回一個正整數,所以你可以通過它來判斷,如果輸入不正確的話它返回是0,你就可以通過這個判斷是否為非法輸入。scanf 函式有返回值且為int型。scanf 函式返回的值為 正確按指定格式輸入變數的個數 也即能正確接收到值的變數...

關於C語言和程式設計,用C語言程式設計和用C 語言程式設計區別大嗎?

一 工欲善其事,必先利其器 這裡介紹幾個學習c語言必備的裝置和書籍 a 開發環境 例如turbo c 2.0,這個曾經佔據了dos時代開發程式的大半個江山。但是現在windows時代,用turbo c有感覺不方面,編輯程式起來很吃力,並且拖放,更沒有函式變數自動感應功能,查詢參考資料也不方便。建議使...

c語言中如何依次輸入陣列中元素,C語言中如何依次輸入陣列中元素

include int main int a 17 int i for i 0 i 17 i scanf d a i return 0 函式功能 把格式化的資料寫入某個字串 函式原型 int sprintf char buffer,const char format argument 返回值 字串長...