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