在下面的c語言中,退格b和換行n同時使用時,為什麼退格就無效了啊,不用換行時,退格有效

2022-11-09 03:12:47 字數 1211 閱讀 4253

1樓:襲綸孛珍

不用換行時,退格有效。這是因為你退格之後,pressanykey

tocontinue把》覆蓋了,所以你看起來是刪除了最後一個》

退格不代表刪除;

#include"stdio.h"

main()

doprintf("\b

");在\b後面加個空格吧,空格把》覆蓋,相當於把最後一個》刪除了;

另外,你的程式不嚴謹,要是你輸入的數中有相同大小的,你也用》連線?

2樓:鈄靜珊少銳

這個問題提出的時間非常久了,原提問者估計都不再看這裡的回答了。但我作為初學者也剛剛遇到這樣的疑惑,經@霜之詠歎調99

回答的提點,自己總結出來原因如下:

1.@霜之詠歎調99說:退格不代表刪除,確實是這樣。

\b是讓游標退回一格,不是刪除前一個字元,事實上前一個字元仍然存在的。我們在程式最後一行執行\b為什麼能刪除一個字元呢?是因為程式執行結束後,顯示介面會輸出」press

anykey

tocontinue「,這行字就會覆蓋游標後面的字元,造成了\b刪除上一個字元的假象,實際上是」游標倒一格,再輸出新字元覆蓋原字元「的過程。如果在語句「printf("\b");」後加"while(1);"讓程式死迴圈,介面不出現「press

anykey

tocontinue」就可以直觀的看到最後一個字元存在,游標是在最後一個字元前面。

2.若是\b\n這樣,執行結果是游標先倒回一格,然後回車換行。那麼前一行的最後一個字元還是存在的,想用\b刪除最後一個字元不成功。

3.若要用\b刪除字元且換行(或後面不再輸出任何內容,包括「press

anykey

tocontinue」),必須得在\b後輸出一個新字元,若不需要顯示任何字元就用空格代替,即用空格替換原字元。

3樓:那拉凝潔魏言

這和\b與\b\n沒有根本的關係

而是由於printf("%d*",i);後面的*好導致有符合條件的i就會輸出一個*

而當最後一個符合條件的i時就多了一個*

而\b將多的那個*蓋住了

\b\n沒有蓋住

你把兩個都去掉就會發現*一直都會多

4樓:納鵬天似欣

確實無效了。具體理由我也不懂。把退格輸出放入for迴圈裡可知,最後一次(即輸出換行前的一個退格語句是無效的)。我估計是轉義字元的間的規定吧。

c語言中for後面的加分號嗎,在C語言中,for語句的後面加分號和不加分號有何不同

分號標誌一個語句的結束,對於for 而言,迴圈體還在 裡邊,如果加了分號,迴圈體就不再會執行,這顯然不是所要的。大多數時候不加 for後面跟的是迴圈體。如果不需要有迴圈體,也就是for括號裡版 面的三句就可以完成所權有功能 那麼就加個分號,表示迴圈體為空。比如 求字串s的長度 for len 0 s...

c語言中a 和 a有什麼不同,c語言中 a a 和 a 的區別

作為單獨的語句,來a 與 a 並沒什源麼區別 但是b a 和b a就有區別了 baia 這個式子du的返回值是 zhia,所以daob a 相當於b a,然後a a 1 a的返回值是a 1 所以b a相當於a a 1 然後b a c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能...

c語言,下面的程式結果為啥是,c語言,下面的程式結果為啥是

恭喜你,你發現了一個非常重要的系統漏洞形式。有很多對系統的破解都是基於此原理,下面我此進行一下解釋。首先先大概指明錯誤 char buf 4 是分配了4個位元組的儲存空間,strcpy buf,aaaa 是向buf寫入5個位元組的資料,因為別忘了字串最後總隱藏著一個字串結束符 0 也就是說,strc...