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

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

關于scanf函數(shù)的運行過程,求答疑解惑~

關于scanf函數(shù)的運行過程,求答疑解惑~

C PHP
隔江千里 2021-12-07 11:07:05
#include "stdio.h"void main(){char ch;scanf("%c",&ch);while (ch!='\n'){if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z'){ch=ch+3;if(ch>'Z'&&ch<'Z'+4||ch>'z')ch=ch-26;}printf("%c ",ch);scanf("%c",&ch);}}如上程序是為了完成輸入字符串的加密,將全部的字母都換成它的后面第三個字符,在輸入時是一次性輸入一串字符的,如:abc123,它的結果應該是def123;現(xiàn)在我不明白的是:scanf()函數(shù)只能一次接收一個字符串,那么我一次性輸入的相當于是一個字符串,那計算機內部可能是以下的哪一種情況:1、我輸入的字符先不進行運算,晢時存在一個非&ch的地方,如什么緩沖中,待我一次性全部輸完,打擊回車后,再開始運行程序,遇到scanf時再依次從晢存的地方將字符錄入ch;2、在我輸入過程中即開始運算,即當我輸入完成a與將要輸入b的間隙,計算機已開始運行,畢竟有了第一個字符,下面的程序已經能夠進行運算了,這樣,只要有一個字符輸入,計算機馬上開始工作,而在此過程中,printf()產生的結果則暫時存在一個暫存區(qū),等待回車時一并輸出到屏幕上。這兩種運行情況倒底是哪一個呢?還是哪個都不是,還有別的解釋?希望大俠們不吝惜賜教!謝謝!
查看完整描述

2 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

scanf 從標準輸入流的緩沖區(qū),按格式定義,讀取數(shù)據(jù)。
如果緩沖區(qū)沒有內容,或剛開始輸入但尚未拍入"\n" 前, scanf 就等待。
拍入"\n"后,scanf 開始工作,按格式定義,讀取數(shù)據(jù)。讀過的部分就清掉,讀剩的部分還留在緩沖區(qū),下一句 scanf (或類似的其它輸入函數(shù),getchar,gets...) 接著從 剩余部分讀起,讀空了不夠讀就等待輸入。
fflush() 可用于清除 緩沖區(qū) 剩余內容。

查看完整回答
反對 回復 2021-12-12
?
吃雞游戲

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

是你說的第一種。你一次性輸入的字符串是連續(xù)的在一塊內存中。然后scanf函數(shù)去了這個字符串里面的第一個。所以就是這樣的情況。
你可以自己在 while語句那里設置一個斷點,調試一下看看。

查看完整回答
反對 回復 2021-12-12
  • 2 回答
  • 0 關注
  • 336 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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