[問題] scanf、printf、%s、%c的問題

看板C_and_CPP作者 (Parisienne)時間12年前 (2013/05/22 18:05), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/2 (看更多)
看到字串的輸入輸想到一些問題,很混淆,想釐清觀念,麻煩大家了,謝謝。 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char str[6]; printf("輸入: "); scanf("%s", str); //(a) printf("%s\n", str); //(b) int i; for(i = 0; i < 6; i++) printf("%c", str[i]); //(c) system("PAUSE"); return 0; } 1. (a)用%s,表示input為字串,(b)用%s,表示以字串形式輸出,(這樣的理解正確嗎?) 若輸入hello,則(b)(c)都可得到hello 2. (a)用%s,表示input為字串,若(b)用%c代表什麼意思? 輸入的字串用字元形式輸出? 輸入hello,則(b)(c)的結果如 http://imgur.com/f5WcasS
不懂為何(b)的輸出結果為該圖形... 3. (a)用%c,表示input為單一字元? 還是字元陣列? 若(b)用%c 輸入hello,則(b)(c)的結果如 http://imgur.com/Kavy1eL
不懂(b)(c)的輸出結果... 4. (a)用%c,若(b)用%s,輸入hello,則(b)(c)的結果如 http://imgur.com/galUzPa
不懂(b)(c)的輸出結果... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.60.73.76 ※ 編輯: Parisienne 來自: 61.60.73.76 (05/22 18:14)

05/22 20:31, , 1F
2. 是把str的地址用字元印出來
05/22 20:31, 1F

05/22 20:32, , 2F
3. input只有一個字元 (b)結果同2. (c)是因為你沒有把str初
05/22 20:32, 2F

05/22 20:32, , 3F
始化,所以會印出原本殘留的值
05/22 20:32, 3F

05/22 20:34, , 4F
唔 樓下比較詳細XD
05/22 20:34, 4F

05/25 20:50, , 5F
感謝前輩解說!!
05/25 20:50, 5F
文章代碼(AID): #1Hd9Xctq (C_and_CPP)
文章代碼(AID): #1Hd9Xctq (C_and_CPP)