gcc的\n換行問題

如果您覺得您的問題不屬於 debian desktop 或是 debian server 版的範圍內,請在這裡發問。

版主: mufa

gcc的\n換行問題

文章訪客 » 週五 2月 28, 2003 9:31 pm

我用gcc寫一個程式
代碼: 選擇全部
#include<stdio.h>
int main(){
        printf("hello");
}

結果無法顯示出hello
於是我在hello後面加上一個\n
代碼: 選擇全部
#include<stdio.h>
int main(){
        printf("hello\n");
}

這樣就可以了(好奇怪)

然後我就繼續寫一個程式測試

代碼: 選擇全部
#include<stdio.h>
int main(){
//讀入任意字串,在每個字元間插入一空格,然後印出來
char j;
char i[10];
scanf("%s",&i);
for(j=0;i[j]!=0;j++)
printf("%c ",i[j]);
}

結果無法顯示

接著修改printf("%c \n",i[j]);
雖然可以顯示,但是會一直換行,不是心目中想要的

於是我把
scanf("%s",&i);
printf("%c \n",i[j]);
換成
fgets(i,10,stdin);
printf("%c ",i[j]);
這樣就可以正常顯示出來了(好奇怪)

再接再厲

我又寫了個九九乘法表

代碼: 選擇全部
#include<stdio.h>
int main(){
char i,j;
for(i=2;i<10;i++){
for(j=1;j<10;j++)
printf("%dX%d=%d\t",i,j,i*j);
puts("");}
}

這個的printf不用加\n就可以正常顯示出來(好奇怪)

有人碰過這個問題嗎?
訪客
 

re:gcc的 換行問題

文章mufa » 週六 3月 01, 2003 7:43 pm

我在幾年前也有過同樣的問題,
因為printf()會先將輸出存放在緩衝區內,
要在printf()後加上一個function將緩衝區中的資料輸出,
但是我忘了是那個function,sorry!

希望對你有幫助。
mufa
版面大總管
版面大總管
 
文章: 150
註冊時間: 週一 9月 09, 2002 4:32 pm

re:gcc的 換行問題

文章訪客 » 週六 3月 01, 2003 7:46 pm

flush();

或c++

cout<<xxx;
cout.flush();
訪客
 

re:gcc的 換行問題

文章mufa » 週六 3月 01, 2003 8:04 pm

是fflush(stdout)吧!
mufa
版面大總管
版面大總管
 
文章: 150
註冊時間: 週一 9月 09, 2002 4:32 pm


回到 debian misc

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客