關於c語言中回車的問題,關於C語言中回車的問題

時間 2021-12-25 07:44:32

1樓:湛藍水晶

因為第一個程式是while迴圈完了才printf結果,只有一次輸出。

第二個程式是在while迴圈過程中就putchar,所以在輸入過程中會輸出結果。

2樓:暴秋穎

while((c = getchar()) != eof)//這裡是死迴圈 eof是???若判斷是輸入一字元則跳出顯示結果 該是

3樓:與子如初見

第一個是個死迴圈。換行肯定起作用。

第二個把輸出寫到迴圈外面。

4樓:匿名使用者

你好,是這樣的,且聽我細細道來

給你舉個例子你就明白了

while((c = getchar()) != eof)printf("%d", nl);

這個輸出printf是在循序執行完畢之後才有的。所以每次輸入都沒有輸出,到最後輸入完了才出結果

while((c = getchar()) != eof)而這個輸出printf是在循序裡面的。所以每迴圈一次輸入都會輸出。

區別就在於輸出函式是什麼時候執行的,它執行了才會有輸出。

5樓:匿名使用者

一:你的c型別應該設定為char型別,雖然int型別也能用,但有點浪費;

二:enter 是 換行 回車 的組合,即\r \n;

三:我的win7 系統用dos時,兩段**都用過換行,但是沒有出現你說的情況;

四:當你輸入一行單詞完畢後,按enter鍵已經清空快取,所以可能無法實現輸入多行單詞,不過如果輸入很長,它會像文字檔案一樣換行,(所以,改進輸入多行單詞這個問題,很抱歉,幫不了你);

關於c語言中陣列定義問題

6樓:育知同創教育

主函式內定義的陣列在堆疊段中分配記憶體。

全域性變數陣列在資料段中分配記憶體。

一般資料段比堆疊段大很多,

所以堆疊段分配不了的記憶體,資料段可以分配

(1)在堆疊段中分配記憶體,由於太大無法分配,所以錯誤。

(2)在資料段中分配記憶體,資料段可以分配,無錯誤。

(3)陣列比(1)需要的記憶體少,在堆疊段大小範圍內,可以分配,無錯誤(4)同(3)

關於c語言中的換行符和回車符

7樓:

注意有兩個比較特殊的字元

回車符和回車換行符

'\xd'這是個轉義字元

其中的x表示他是一個16進位制數

16進位制的d就是10進位制的13

也就是 '\r' 字元,也就是回車符(注意跟'\n'這個回車換行符比較)

輸入這個字元後,游標會跳到本行首,注意是本行首位,好了看你的**

#include

void main()

第二段**:

#include

void main()

8樓:金色潛鳥

printf("%c",'a'); 在本行第一格,列印字元a

printf("%c",'\xd'); 游標移動到本行第一格 因為 \xd 是16進位制編碼 0x0d, 是控制字元 「回車」。

printf("%c",'b'); 在當前位置上 列印字元b,這就把原來本行第一格處的字元改寫了。

printf("%c",'a'); 在本行第一格,列印字元a

printf("%c",'c'); 在本行第二格,列印字元c

printf("%c",'\xd'); 游標移動到本行第一格

printf("%c",'b'); 在當前位置上 列印字元b,把原來本行第一格處的字元改寫成b

第一格是b,第2格是c

看到是 bc

0x0a -- 新行,換行,new-line, line feed (lf)

0x0d -- 回車,carriage return, (cr)

9樓:匿名使用者

將printf("%c",'\xd');

改為printf("%c",'\x0d');

結果還是一樣嗎

10樓:徐爰箕採萱

文字檔案的行結束符,傳統上

pc機用

crlf

蘋果機用cr

unix用lf

cr--

回車符,c語言'\r'

lf--

換行符,

c語言'\n'

不同計算機上c語言統一規定為:

文字檔案的行結束符一律變成一個符號lf,也就是換行符,也就是newline符,

也就是'\n'.

「回車和換行符轉換成一個換行符」--

對pc機而言,文字檔案行結束符,crlf讀入後,丟掉cr,留lf.

例如fgets()

讀入一行,行尾只有lf,沒有cr.

c語言換行符和回車符的疑問

11樓:瀚漠

這個是和緩衝區有關的,使用者輸入的資料是儲存在緩衝區的,然後執行:scanf、gets等會從緩衝區讀資料。

在執行完scanf之後執行getcha確實接收到了『\n' ,這是因為scanf只接收了數字,緩衝區還有輸入的'\n' ,當呼叫getchar的時候不需要你再輸入它就已經接收到了資料,如果你把if去掉,那gets也不會等待你輸入,直接接收緩衝區的回車符。

在執行完scanf後想接收字元類資料就必須把緩衝區清空(flush)或者像這裡呼叫一次getchar,這樣gets函式才能順利執行。

不知道我這樣講你能不能明白,還有疑問可以接著問......

12樓:匿名使用者

因為 你在輸入資料後會按 鍵盤上的回車鍵(是 '\n')scanf 遇到回車鍵會結束讀取資料,但是不會將 '\n' 從鍵盤緩衝區讀出,便會在鍵盤緩衝區

如果加 getchar(),便會讀出 '\n'

如果沒有, 等到gets()讀取鍵盤緩衝區內容是,發現'\n',認為讀取結束,便返回,雖未讀取任何字元,但是會讀出'\n',對於gets()來說,'\n'不是它要讀取的內容,便會丟棄!

13樓:匿名使用者

問的問題好奇怪,程式既沒有return ,exit,也沒有堆疊溢位,怎麼會失效?

建議你在return 0;之前加一句printf("main end.\n");你就知道程式沒有失效了。

另外關於\r還是\n,系統會自動幫你轉換成\n,按照你這個程式的寫法你只需要在程式裡面判斷\n就可以了,多餘你不用考慮。

14樓:匿名使用者

原因是在這兩個函式上getch()和scanf()上.'\n'和'r'其實都是回車鍵產生的字元.只是scanf()或getchar()遇到回車鍵就會獲得'\n'

而getch()遇到回車就得到'\r',為了檢驗我所說.寫了程式檢驗:

main()

/*結果是10,也就是'\n'*/

main()

/*結果是13,就是'\r'*/

造這個的原因是stdin流.因為getch()不從stdin流中讀取資料,而是讀取使用者即時輸入資料.

15樓:數學之星

c語言中用「printf」輸出時,換行符是'\n',回車符是'\r'。

c語言中用「scanf」獲取輸入值時,獲取的「敲鍵盤回車鍵產生的字元」是換行符。

你把if語句去掉之後,「gets(name) ;puts(name) ;」這兩句語句沒有失效,而是把換行符獲取、輸出了。由於你沒有在這兩句語句後面放置暫停語句,這兩句語句把換行符獲取、輸出後程式直接結束了,沒有讓你看到效果,所以你認為這兩句語句失效了。

關於c語言中指標賦值的問題,關於C語言中指標賦值的問題

計算天下 你這樣想說明你還沒有真正理解記憶體和指標。int a 表示編譯器隨機取出一個空閒的地址分配給a,不妨設為00000000,長度為sizeof int 不同編譯器可能不同。int p 也表示隨機取出一個空閒的地址分配給p,不妨設為000000f0,長度一般為4個位元組,則這四個位元組現在儲存...

C語言中關於「有效數字」的問題,在c語言中,有效數字和有效數位怎麼解釋?

當你輸入2.2e2時a 4.84,而輸入2.2e 2時a 0.20661157024793388429752066115702.它們的是float型,放在記憶體中是 2.2e2 01000011 0,1011100 00000000 00000000,2.2e 2 00111100 1,010010...

C語言關於邏輯值的問題有加分,c語言中,關係表示式和邏輯表示式的值是什麼?

首先對你的苦惱表示理解和同情。一句話,二值世界中只有0和非0兩個概念,如何再有1?1的引入只是編譯器實現和人類的習慣。c語言標準規定 0為假,非0為真 這是毫無疑問的。但是 非0 並不是一個具體的值,大多編譯器都把 非0 實現為1,照顧人類習慣,但引起了很多誤會。第一題 a毫無疑問 第二題 k k是...