2015-05-12 90 views
1

所以我有一個字符串用下列值如何讀取由C中的符號分隔的sscanf整數?

[7,8]

現在我wan't到的每個值(只有數字)存儲在二維數組[1] [2]。
我很確定使用sscanf是做到這一點的最佳方式,但是如何告訴sccanf只讀取整數?

在此先感謝

+0

二維數組在C中通常是錯誤的。 –

+3

你有一個包含這些值的*數組* *包含'「[7,8] 「'? –

+0

'我非常確定使用sscanf是做這件事的最好方法......不要那麼肯定。 :-) –

回答

0
sscanf("[%d,%d]", Array[a][b], Array[c][d]); 
+0

謝謝,這工作。我使用了sscanf(字符串,「[%d,%d]」,&array [1,0],&array [1,1]) –

+0

謝謝你的接受。 – Joshpbarron

0

如果您的系統沒有getline你可能會使用getline(3),或fgets(3)整條生產線。

然後你可以用parse這行手動。你可能確實在某些時候使用sscanf(3)(你可以使用%n,總是從sscanf測試返回計數),但是你可以使用strtol(3)(其endptr說法是得心應手!)等

始終測試返回計數由sscanffscanf,scanf給出!

有些人可能會推薦strtok(3),我不喜歡它,因爲它是有狀態的和不可重入的。

順便說一句,二維數組在C中很棘手(我建議避免它們,只使用一維數組)。您可能會dynamically分配一些struct(您之前聲明)以flexible array member結尾。

0

我不知道如果我理解你的問題。但我試過了。

快速骯髒。也許這個幫助。

for(int i =1; i++; i =< (sizeof(array1D)/arraydatatype)) 
 
{ 
 
\t array2D[i-1][i-1] = array1D[i-1]; 
 
\t array2D[i-1][i-1] = array1D[i]; 
 
}

i = 0; 
 
j = 0; 
 
while (i < arraysize) 
 
{ \t array2D [j][0] = array1D [i]; 
 
\t array2D [j][1] = array1D [i+1]; 
 

 
\t j++; 
 
\t i+=2; \t 
 
}

scanf函數只從控制檯讀取。但你已經有一個數組?如果你有一個字符串,你可以使用strncpy或其他東西..

相關問題