第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

幫忙看看這個(gè)問(wèn)題,關(guān)于C語(yǔ)言scanf函數(shù)輸入單個(gè)字符%c用%s代替?

幫忙看看這個(gè)問(wèn)題,關(guān)于C語(yǔ)言scanf函數(shù)輸入單個(gè)字符%c用%s代替?

慕婉清6462132 2021-07-07 17:07:34
void main(){int i;int num[35],order[35];char flag;float a[35][6]={0};input(num,a);count(a);sort(a,order);printf("該程序可以篩選用戶指定課程成績(jī)?cè)?0分(含90分)以上,并且總分為前五名的學(xué)生情況,是否需要查詢?(y/n)");scanf("%s",&flag);if(flag=='y')serch(num,a,order);getchar();getchar();getchar();}這是我的主函數(shù),另外的子函數(shù)沒(méi)考過(guò)來(lái),問(wèn)題在于scanf那句,如果我用%c,運(yùn)行有邏輯問(wèn)題,你輸入y后,好像程序根本就沒(méi)有輸入數(shù)據(jù),我把%c換成%s就可以了,絕對(duì)無(wú)誤。以前也遇到好多這種情況,這樣換屢試不爽,可是我不清楚到底怎么回事。還有如果我把前面的子函數(shù)都刪掉,上了就scanf,用%c是可以的,不知道這是怎么回事。高手給指點(diǎn)一二
查看完整描述

2 回答

?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

scanf("%c", &flag);
輸入 : y 再回車(chē)沒(méi)反應(yīng)?
可能是在前面的
input(num,a);
count(a);
sort(a,order);
中存在有緩沖,因?yàn)?c不會(huì)跳過(guò)空格等空字符,而%s是會(huì)跳過(guò)的,這也許是唯一的差別。

解決辦法:
在scanf("%c", &flag);前清空緩存
fflush(stdin);
然則也不清楚是不是這個(gè)原因,
你完全可以打印一下flag的碼值來(lái)調(diào)試一下嘛。
你可以試一下,多年未動(dòng)C的飄過(guò)。



查看完整回答
反對(duì) 回復(fù) 2021-07-11
?
米脂

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊

原因是在input函數(shù)里面有接受用戶輸入的動(dòng)作,而輸入一定是以回車(chē)結(jié)束,那么這個(gè)回車(chē)就會(huì)殘留在緩存中,而當(dāng)你的scanf讀取flag的時(shí)候,程序會(huì)自動(dòng)獲取前面的那個(gè)回車(chē)符號(hào),這就是用%c會(huì)自動(dòng)跳過(guò)的原因,而用%s的話,程序就會(huì)等待下一行輸入,回車(chē)符號(hào)并不會(huì)被接收,建議在scanf("%c", &flag);修改為:
fflush(stdin); //清空緩存
scanf("%c", &flag);

查看完整回答
反對(duì) 回復(fù) 2021-07-11
  • 2 回答
  • 0 關(guān)注
  • 624 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)