關於字元陣列輸出問題

2021-12-16 15:11:29 字數 1896 閱讀 8652

1樓:匿名使用者

在scanf("%d",&n);後面加個getchar();,把回車輸入的一個多餘字元給讀走,否則這個多餘字元會被gets讀到的。

回車實際上輸入了兩個字元,一個用來告訴scanf停止輸入,一個是多餘字元,留在了輸入緩衝區內。

2樓:

因為for迴圈讀取字串時,將城市個數的回車換行當做一個string讀取了,所以少讀了一個

如下修改即可

scanf("%d",&n);

gets(s);

3樓:飛聞

為什麼要用到二維陣列?

c語言中char型別陣列的輸出問題--輸出時為何需要&符?

4樓:墨汁諾

char a[20];

那麼a表示字元陣列的起始地址,它和&a[0]是一個意思。

使用printf()輸出字元陣列a的內容:

printf("%s\n", a);

就等同於printf("%s\n", &a[0]);

輸出的時候用:

int i = 0;

for (i=0; i<

防止緩衝區溢位可以用這樣的:

fgets(a, sizeof(a), stdin);

a[strlen(a) - 1] = '\0';

5樓:匿名使用者

你前面輸出格式為"%s"即字串型別,後面對第一個字元s[0]加&表示為取得整個字串的首地址,再以字串的格式肯定讀出的是整個字串,如果你把"%s"改為"%c"把&去掉就會輸出首字元,如果只把&去掉,那麼你是以字串的格式輸出首字元,格式不對當然是亂碼了

6樓:

printf("%s",s[0]); -- 不加&符號 s[0] 表示 整型值,數值等於s裡第一個字元(你的情況是h) 的 ascii 值,如果用%d 格式列印,得104,如果用%c 格式列印,得字母h, 用%s列印 得亂碼。

printf("%d",s[0]); 打出 104printf("%c",s[0]); 打出 h%s 輸出格式,用於字串,要求給 字串的首地址,char s 的首地址 是 &s[0] 或 s.

printf("%s",s); 打出打出打出打出 w are you....

7樓:匿名使用者

& 這個符號叫做取址運算子 標誌一個地址 對應前面的%s c語言基礎很重要! 一些細節要注意!

8樓:淦菀歐陽陽冰

query取得iframe中元素的幾種方法在iframe子頁面獲取父頁面元素

**如下:$(

9樓:我是菜狗

那當然%s要的是地址

如果你printf("%s",s); 也是一樣的

s是陣列的首地址

10樓:匿名使用者

記住c語言的nb之處在於在處理字串的時候使用一種超乎尋常的思維: 用一地址或字元指標就可以代表一字串!

當然,想列印一字串,也通過這種方式就可以獲得。

為什麼呢?

因為c語言內部的機制表明: 它對字串的處理是,遇到'\0',其實也就是0,就表明字串結束了,所以呢,不論這個指標在什麼位置都沒關係,編譯器會依次向後尋找字元,知道遇到null(或0或'\0')就算字串結束了。

11樓:

因為%s要的是一個地址 所以要這麼寫

也可以是s

關於c語言二維陣列輸出問題,C語言程式設計二維陣列輸出一個23的矩陣

二維bai陣列是由一維陣列構成的,迴圈第du一維輸出zhi就可以了 include stdio.h int main int argc,char argv int i for i 0 i 7 puts s i return 0 執行結果 版空的那一行就是那個權空字串的輸出結果。c語言程式設計 二維陣...

關於MATLAB資料結果的輸出問題fprintf

唉,叫你把fopen和fclose放到迴圈外面,不回是fprintf 汗啊!答 fid fopen exp.txt w for i 1 length d for j 1 a imread d num2str d i num2str j tif if j 1 figure 1 bw roipoly a...

高階FS輸出問題

7區伊莫塔爾 bl法師 名字就不說了 我在這,就不講什麼花架子了。我簡單幫你分析。你一說天賦,我就基本明白你洗的是什麼了。你們會長給你的是個簡單的天賦。但是!絕對不是無腦寒冰箭。我告訴你下簡單的輸出手法。你肯定加了寒冰指的吧 前面肯定也加了那個怪被凍住捱打加爆擊率的天賦 那麼你在輸出的時候要注意那個...