c語言字串輸入輸出問題,一個C語言字串輸入輸出問題

2021-05-04 18:24:47 字數 1497 閱讀 2917

1樓:

在你輸入int型別的n後同時輸入了一個換行符, 這使a[0] = '\n'而不是'a', 所以說你的a字元型陣列存的其實是'\nabcd', 'e'則沒有讀入,可以考慮用scanf("%s", a)來讀入, 或在輸入字元前用getchar()把換行符讀掉

2樓:匿名使用者

那是鍵盤緩衝區殘餘資訊的問題

#include

int main()

while(c!='n');

}scanf("%c",&c);這句不能正常接收字元,什麼原因呢?我們用printf("c=%d/n",c);將c用int表示出來,啟用printf("c=%d/n",c);這一句,看看scanf()函式賦給c到底是什麼,結果是 c=10 ,ascii值為10是什麼?換行即/n.

對了,我們每擊打一下"enter"鍵,向鍵盤緩衝區發去一個「回車」(/r),一個「換行"(/n),在這裡/r被scanf()函式處理掉了(姑且這麼認為吧^_^),而/n被scanf()函式「錯誤」地賦給了c.

解決辦法:可以在兩個scanf()函式之後加個fflush(stdin);,還有加getch(); getchar();也可以,但是要視具體scanf()語句加那個,這裡就不分析了,讀者自己去摸索吧。但是加fflush(stdin);不管什麼情況都可行。

3樓:匿名使用者

字串陣列是比你想象的要大一,比如字串「abc」,長度是四的,因為最後一位儲存的是『\0』....懂了吧。你的n需要加一。

4樓:匿名使用者

把for(i=0;i

scanf("%c",&a[i]);

換成scanf("%s",a);比較好

一個c語言輸入輸出字串的問題

5樓:瓦力

*poutputstr='\0';

puts(poutputstr);

這兩個語句使得poutputstr指向了『\0』所在的地址

6樓:

#include

#include

#include

void stringzip(const char *pinputstr, long linputlen, char *poutputstr)

*poutputstr='\0';

puts(poutputstr);//問題在這裡,這裡的poutputstr指標已經移到字串末尾了,輸出是空的。

}int main()

7樓:姚哥號號

在你輸入int型別的n後同時輸入了一個換行符, 這使a[0] = '\n'而不是'a', 所以說你的a字元型陣列存的其實是'\nabcd', 'e'則沒有讀入,可以考慮用scanf("%s", a)來讀入, 或在輸入字元前用getchar()把換行符讀掉

8樓:匿名使用者

int main()

c語言列印字串亂碼問題,C語言,字串輸出是亂碼

include void reverse char p,char q char myitoa int value,char const string,int radix else while value if sign reverse string,s 1 s 0 return string int...

c語言字串常量的問題,C語言字串常量的一個問題。

字串bai遇到 0表示結束 第一個字du符串就相zhi當於dao abc123 那版麼長度為6 第二個字串就相當於 abc 那麼長度為3但是實際操作權發現並非如此,如下程式 include memcpy c1,abc123 01de n 0x20 printf s n c1 char c2 0x20...

c語言的定義字串的問題,c語言的一個定義字串的問題

c2是代表的這個陣列的第一個字元的地址,地址就是常量,所以不能被賦值。c語言規定,不可以給已經定義的陣列名重新賦值。因為陣列名中存放的是陣列的首地址。值為 abc edfg 的字串常量在賦值過程中給出的是這個字串在記憶體所佔一串連續儲存單元的首地址。而c2是一個不可重新賦值的陣列名。因此,這樣賦值不...