所以我有一个包含以下值的字符串
[7,8]
现在我不想将每个值(只有数字)存储在2D数组[1] [2]中。
我非常确定使用sscanf是最好的方法,但是如何告诉sccanf只读取整数呢?
提前致谢
答案 0 :(得分:0)
sscanf("[%d,%d]", Array[a][b], Array[c][d]);
答案 1 :(得分:0)
如果您的系统没有getline
,则可能会使用getline(3)或fgets(3)获得整行。
然后您可以手动parse该行。您可能确实在某个时候使用sscanf(3)(并且您可以使用%n
并始终测试来自sscanf
的返回计数),但您可以使用strtol(3)(endptr
参数很方便!)等等。
始终测试sscanf
,fscanf
,scanf
给出的返回次数!
有些人可能会推荐我不喜欢的strtok(3)因为它是有状态且不可重入的。
顺便说一下,2D数组在C中很棘手(我建议避免使用它们并仅使用1D数组)。您可以dynamically分配一些以flexible array member结尾的struct
(您之前声明的那样)。
答案 2 :(得分:0)
如果我理解你的问题,我不会这样做。但我试过了。
快点肮脏。也许这有帮助。
for(int i =1; i++; i =< (sizeof(array1D)/arraydatatype) )
{
array2D[i-1][i-1] = array1D[i-1];
array2D[i-1][i-1] = array1D[i];
}
&#13;
i = 0;
j = 0;
while (i < arraysize)
{ array2D [j][0] = array1D [i];
array2D [j][1] = array1D [i+1];
j++;
i+=2;
}
&#13;
scanf仅用于从控制台读取。但是你已经有一个阵列?!如果你有一个字符串,你可以使用strncpy或其他东西..