2015-07-06 38 views
0

我想將數據存儲在2d字符串中。傳統的方法是:如何在一次拍攝中輸入2d字符串的所有元素?

char arr[20][20]; 
int i; 
int size; 
scanf("%d",&size); 
for(i=0;i<size;i++) 
scanf("%s", arr[i]); 

這樣我會輸入:

Hey 
I 
Am 
New 
Here 

我想有輸入爲:嘿,我是新來的 和數組應具有:a[20][20]={"Hey","I","am","new","here"}

回答

0

它亙古不變的問題,希望scanf()是否使用「\ n」(鍵盤按鍵輸入)或空格輸入,將工作的定義相同way.The標準是任何空白可以分離鮑

分離

也就是說,如果你把輸入原樣

Hey 
I 
Am 
New 
Here 

或AS-

Hey I am new here 

它總是將它們存儲爲{ 「嘿」,「我」,「上午」,「新」,「這裏」}

5

實現此目的最優雅的方式是,

  1. 使用01讀取輸入。
  2. 令牌化使用strtok()
  3. 在有效性檢查後將令牌存儲在數組元素中。

這樣一來,你有很多優點,如

  • 如果在所有使用固定大小的數組,你可以擺脫這個問題爲size一個單獨的用戶輸入。您只能繼續對整個輸入進行標記,直到數組元素在那裏。
  • (使用strlen(),也許)
  • 可以有不具有預先確定的尺寸的陣列,並使用動態存儲器分配的靈活性執行輸入值的有效性檢查,則可以分配和調整陣列 ,根據輸入的數量(和大小)(如果你想的話)。
+0

非常感謝。有效。 奇怪的是,雖然scanf也工作過,也許因爲它不讀取空間,所以它將下一個字存儲在下面的索引中。是嗎? –

相關問題