亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c語言中scanf函數定義寬度的問題?

c語言中scanf函數定義寬度的問題?

海綿寶寶撒 2019-02-05 16:06:57
對于整型 scanf("%4d",&a);1.如果輸入以下內容12345678則結果scanf函數只把1234保存到變量a中2.如果輸入以下內容123則結果scanf函數會把123原樣保存的變量a中可用如下程序進行說明#include <stdio.h>int main(){int a;scanf("%4d",&a);printf("%d",a);}問題:如果對于實型數據,或者字符型數據,又是什么的結果呢?請舉例說明。謝謝,剛剛開始學C,呵呵~~多多指教。
查看完整描述

2 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

這個問題問的好。
你問題的第二種情況是說如果輸入多個字符類型數據的情況。
如果是這樣,請注意,除非,如果scanf后面的格式是%c的,那么它只能吸收你輸入的一個字符,后面的東西全部放在緩存區。也就是說,你再接上一個scanf( "%c", &c),它會繼續吸收你前面沒有吸收到的字符。
如果下面語句段:
scanf( "%c", ch1 );
scanf( "%c", ch2 );
scanf( "%c", ch3 );
你輸入"ab"后按回車。那么,a被ch1吸收,b被ch2吸收,ch3呢?你是不是以為沒有東西吸收?其實你輸入ab后按了回車,所以回車被ch3吸收了。這點一定要小心。
你的問題第一種情況就明顯很多了。
比如你的scanf語句吸收格式字段是%4f,但是你輸入了3.1415926那么,它只會吸收3.14,作為浮點類型。后面的15926以整型的方式存在于緩存中。

學C語言一定要不停的去體悟它的輸入輸出,個人覺得它的重要性僅次于指針。

查看完整回答
反對 回復 2019-03-14
?
浮云間

TA貢獻1829條經驗 獲得超4個贊

scanf("%4d",&a);表示若輸入小于或等于四位,則原樣輸出,若輸入大于四位,從左到右截取你輸入的字符
scanf("%-4d",&a);表示若輸入小于或等于四位,則原樣輸出,若輸入大于四位,從右到坐截取你輸入的字符

查看完整回答
反對 回復 2019-03-14
  • 2 回答
  • 0 關注
  • 1077 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號