看板 C_and_CPP 關於我們 聯絡資訊
我宣告了一個指標陣列 char *array[10]; 接下來想要用while讓user輸入10個字串,分別存到array int i=0; while(i<10) { char string[20]; scanf("%s",string); array[i]=string; i++ } 但是我發現string這個陣列的位址不會變 所以內容一直被覆蓋過去,請問應該如何才能給string這陣列新的位置呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.50.200 ※ 編輯: asadman1523 來自: 140.129.50.200 (11/21 10:53)
bigpigbigpig:當然不會變了,羅馬為什麼會搬家到東京? 11/21 10:56
我以為char放在while裡面會重新宣告string的位址... ※ 編輯: asadman1523 來自: 140.129.50.200 (11/21 10:58)
loveme00835:http://ideone.com/oZO2Hc 以整數的例子來說, 雖然你 11/21 11:03
loveme00835:讀進來的數值會放在變數 a 所佔的記憶體上, 但是為了 11/21 11:04
loveme00835:存進陣列, 還是會把記憶體中的數值"複製"一份儲存在已 11/21 11:04
loveme00835:經配置好的空間中, 現在你的 case 倒比較像這樣 11/21 11:06
loveme00835:http://ideone.com/g807Aq 把 string 一整塊空間當作 11/21 11:07
loveme00835:變數, 那麼你要儲存這個變數在別的地方也要有足夠大的 11/21 11:08
loveme00835:空間才行, 用二維的 char 陣列或是 malloc 動態配製吧 11/21 11:09
loveme00835:記住丟進 scanf 的是變數的位址, 所以當你用 "%s"來讀 11/21 11:10
loveme00835:的時候, scanf 預期得到的是 char變數的位址而不是 11/21 11:11
loveme00835:char*變數的值; char* 用來指向一連串的 char變數, 並 11/21 11:12
loveme00835:不表示 char*=字串變數 11/21 11:13
cobrasgo:你以為你在寫python嗎XD 11/21 20:51