所以我有一個字符串用下列值如何讀取由C中的符號分隔的sscanf整數?
[7,8]
現在我wan't到的每個值(只有數字)存儲在二維數組[1] [2]。
我很確定使用sscanf是做到這一點的最佳方式,但是如何告訴sccanf只讀取整數?
在此先感謝
所以我有一個字符串用下列值如何讀取由C中的符號分隔的sscanf整數?
[7,8]
現在我wan't到的每個值(只有數字)存儲在二維數組[1] [2]。
我很確定使用sscanf是做到這一點的最佳方式,但是如何告訴sccanf只讀取整數?
在此先感謝
sscanf("[%d,%d]", Array[a][b], Array[c][d]);
謝謝,這工作。我使用了sscanf(字符串,「[%d,%d]」,&array [1,0],&array [1,1]) –
謝謝你的接受。 – Joshpbarron
如果您的系統沒有getline
你可能會使用getline(3),或fgets(3)整條生產線。
然後你可以用parse這行手動。你可能確實在某些時候使用sscanf(3)(你可以使用%n
,總是從sscanf
測試返回計數),但是你可以使用strtol(3)(其endptr
說法是得心應手!)等
始終測試返回計數由sscanf
,fscanf
,scanf
給出!
有些人可能會推薦strtok(3),我不喜歡它,因爲它是有狀態的和不可重入的。
順便說一句,二維數組在C中很棘手(我建議避免它們,只使用一維數組)。您可能會dynamically分配一些struct
(您之前聲明)以flexible array member結尾。
我不知道如果我理解你的問題。但我試過了。
快速骯髒。也許這個幫助。
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或其他東西..
二維數組在C中通常是錯誤的。 –
你有一個包含這些值的*數組* *包含'「[7,8] 「'? –
'我非常確定使用sscanf是做這件事的最好方法......不要那麼肯定。 :-) –