如何用C中符号分隔的sscanf读取整数?

时间:2015-05-12 10:56:38

标签: c scanf

所以我有一个包含以下值的字符串

[7,8]

现在我不想将每个值(只有数字)存储在2D数组[1] [2]中。
我非常确定使用sscanf是最好的方法,但是如何告诉sccanf只读取整数呢?

提前致谢

3 个答案:

答案 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参数很方便!)等等。

始终测试sscanffscanfscanf给出的返回次数!

有些人可能会推荐我不喜欢的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;
&#13;
&#13;

&#13;
&#13;
i = 0;
j = 0;
while (i < arraysize)
{	array2D [j][0] = array1D [i];
	array2D [j][1] = array1D [i+1];

	j++;
	i+=2;	
}
&#13;
&#13;
&#13;

scanf仅用于从控制台读取。但是你已经有一个阵列?!如果你有一个字符串,你可以使用strncpy或其他东西..