被忽略scanf函數應用技巧「scanf返回值被忽略怎麼解決」

C語言是面向過程的,而C++是面向對象的

C和C++的區別:

C是一個結構化語言,它的重點在於算法和數據結構。C程序的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制)。

C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。 所以C與C++的最大區別在於它們的用於解決問題的思想方法不一樣。之所以說C++比C更先進,是因為“ 設計這個概念已經被融入到C++之中 ”。

C語言中scanf函,寫代碼時總是不小心在這裡犯錯,問題與應對技巧

在寫代碼時總是不小心在這裡犯錯,所以特意查了一下這個函數,並且做以整理,現分享給大家。

scanf()函數的參數輸入類型不匹配問題

這是我在百度時見到的問題,還沒遇到。拿來整理,以備日後需要。

#include<stdio.h>

main()

{

int a=123;

char c=’t’;

printf(“input “);

scanf(“%d%c”,&a,&c);

scanf(“%d%c”,&a,&c);

scanf(“%d%c”,&a,&c);

printf(“%d %c “,a,c);

return 0;

}

當輸入a 回車 後,會直接跳過下面2個scanf語句,直接輸出為

123

t

原因:對於scanf(“%d%c”,&a,&c),scanf語句執行時,其中有一個參數不匹配,那就從這個地方跳出,忽略這個scanf後面所有的參數,而去執行下一條語句。

解決方法:scanf()函數執行成功時的返回值是成功讀取的變量數,也就是說,你這個scanf()函數有幾個變量,如果scanf()函數全部正常讀取,它就返回幾。但這裡還要注意另一個問題,如果輸入了非法數據,鍵盤緩衝區就可能還個有殘餘信息問題。

C語言中scanf函,寫代碼時總是不小心在這裡犯錯,問題與應對技巧

比如:

#include <stdio.h>

main()

{

int a=123,b;

while(scanf(“%d%d”,&a,&b)!=2)

fflush(stdin);

printf(“%d %d “,a,b);

return 0;

}

還有個辦法:只要用scanf(“%[^ ]”,strings); 就可以了。很神奇吧。還要注意方括號兩側都不能加空格。

C語言中scanf函,寫代碼時總是不小心在這裡犯錯,問題與應對技巧

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/284426.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-22 15:07
下一篇 2024-12-22 15:07

相關推薦

發表回復

登錄後才能評論