⑴ c語言中利用\r為什麼前面的輸出不見了
\r是回車的意思,也就是回到行首,再輸出當然覆蓋前面的字元了。當然,只是覆蓋再輸出時原來位置的字元,不再輸出的地方會保留原來的字元。
⑵ C語言中如何清空輸入輸出緩沖區
最簡單的是用fflush()函數。
此函數包含在stdio.h頭文件中,用來強制將緩沖區中的內容寫入文件。
函數原型:int fflush(FILE *stream) ;
函數功能:清除一個流,即清除文件緩沖區.
常用場合:
一、ff(stdin)刷新標准輸入緩沖區,把輸入緩沖區里的東西丟棄
fflush(stdout)刷新標准輸出緩沖區,把輸出緩沖區里的東西列印到標准輸出設備上。
二、scanf()函數接收輸入數據時,遇以下情況結束一個數據的輸入:(不是結束該scanf函數,scanf函數僅在每一個數據域均有數據,並按回車後結 束)。
① 遇空格、「回車」、「跳格」鍵。
② 遇寬度結束。
③ 遇非法輸入。
鍵盤緩沖區就可能有殘余信息問題。
scanf()函數應該只是掃描stdin流,這個殘存信息是在stdin中
解決就要在scanf()函數之後加個fflush(stdin)
三、寫文件的時候 不會馬上進行物理磁碟的文件讀寫,而是先寫入緩存,當緩存中內容達到一定程度後再寫
FILE *fp=fopen("a.txt","w");
fprintf(fp,"abcdef");
fflush(fp);
⑶ 用c語言編程怎樣把畫面重新輸出一遍
只要輸出一遍嗎?本人不建議用goto語句。
這樣:
int flag=1;
輸出畫面語句;
while(flag)
{
輸出畫面語句;
flag = 0;
}
明白嗎?
⑷ 如何用C語言輸出結果
一般格式
printf(格式控制,輸出表列) 。
說明:
(1)「格式控制」是用雙撇號括起來的字元串,也稱「轉換控制字元串」,它包括兩種信息:
①格式說明:由「%」和格式字元組成,它的作用是將輸出的數據轉換為指定的格式輸出。
②普通字元,即需要原樣輸出的字元。
(2)「輸出表列」是需要輸出的一些數據,可以是表達式 。
(3) printf函數的一般形式可以表示為printf(參數1,參數2,„„,參數n) 。
功能是將參數2~參數n按參數1給定的格式輸出
⑸ 用c語言每秒輸出一次
#include<stdio.h>
#include<windows.h>//此處是必要的頭文件
intmain(intargc,char*argv[])
{
inti=0;
for(i;i<10;i++)
{
printf("%d",i);
Sleep(1000);//sleep函數對應輸出的延時,1000就是1000Ms,就是1秒的意思。
}
return0;
}
謝謝,純手打,望採納
⑹ C語言緩沖區的問題:下面是代碼
輸出緩沖區:
c標准規定fflush()函數實現,用來刷新輸出(stdout)緩存的,對於(stdin)是么有意義的,gcc也不能使用fflush(stdin)來刷新,因為gcc么實現它。
那麼為什麼要刷新呢,個人認為是這樣的
打個比方getchar()函數,我們知道他是從界面讀取用戶輸入的字元,讀取之後編譯器就把它放在緩存中,當達到一定值的時候,才寫入文件什麼的,或者我們自己主動調用函數寫進去,這個時候如果你還要讀取字元到另一個文件中,你會發現這個時候不是你要寫入文件的字元,這個時候你就應該刷新下緩存。
打個比較典型的比方:
char
p[]={「a」,「b」,「c」};
printf("%d",strlen(p));
我們發現輸出的數值不是我們想像的3,為什麼,這就是緩存的問題,因為數組p的結束符不是『/0』,系統會從緩存裡面一直讀,根據我的理解如果先刷新下緩存,應該就是3了
對於lz的例子我覺得好像么什麼問題,如果要加刷新緩沖,那我覺得可能是,你sleep(1)的時候,其他程序開始佔用cpu,導致緩存發生變化,導致輸出不正常
刷新緩存在tcp和udp通訊的時候用的很多,lz可以看看這方面資料
⑺ c語言,書中的刷新緩沖區問題,為什麼我從來沒遇到過我printf無論輸出什麼,他都會輸出。
跟編譯器有關。大部分的編譯器都沒有這種問題了,都是立即就輸出了。我目前為止只發現xcode里printf是需要回車符才會輸出到屏幕,其他編譯器都是printf什麼就立刻輸出到屏幕了。
⑻ C語言怎麼實現每秒刷新一次後重新輸出
由於c語言標准庫函數,沒有Sleep延時程序,需要自己編寫,主要通過循環判斷difftime函數返回的時間差來實現延時,具體代碼如下,
#include <stdio.h>
#include <time.h>
//延時程序
void sleep(int s)
{
time_t tmp1=time(NULL);
time_t tmp2=tmp1;
while(difftime(tmp2,tmp1)<s)//延時s秒後結束
{
tmp2=time(NULL);
}
}
int main(int argc, char *argv[])
{
int i=1;
while(i)
{
printf ("%d : %s \n",i++,__TIME__);//列印i及程序編譯時間
sleep(1);
system("cls"); //清屏
}
return 0;
}
函數double difftime(time_t time2, time_t time1);返回兩個time_t型變數之間的時間間隔,即 計算兩個時刻之間的時間差。time1計時開始時間,time2計時結束時間,不斷更新time2直至(time2-time1)為所需要的延時時間即可。
⑼ c語言怎麼重復輸出
最簡單的方法就是寫多條輸出語句來實現內容的重復輸出。只需要按照要求寫規定條數的輸出語句即可。
或者利用for循環或者while循環語句來多次執行同一條輸出語句,也可以達到重復輸出的目的。
⑽ c語言,visual c++ 怎麼讓輸出的值保持一個位置不停地更新,而不是一個佔一格的printf出來
移動游標啊! 每次輸出使游標退回來,然後下一次輸出覆蓋前一次的輸出就行了!上面的那種方法太*****, 悲催。 你直接調用一個API吧游標移動一下,這種方法可以修改控制台輸出的內容!
或者還有一種方法:
你的程序顯示 60 % 肯定是在同一行,那麼每次輸出 **%的時候 在字元串後面加上 \r , 然後下一次輸出的時候在把這行重新輸出一遍就可以了。