2013-08-27 55 views
-1

我想扫描2-d矩阵为整数行明智即一行在“C”扫描矩阵一次一个行

例如一个时间:
如果矩阵是:

1 2 3 
4 5 6 
7 8 9 

然后应该只有3时间SCANF被使用和第一次输入是

1 2 3 

一次等其他行。

字符,我们可以使用这样的:

char mat[10][10]; 
scanf("%s[^\n]%*c", mat[i]); 

类似的是可能的整数?

+0

为什么不给阵列的三个元素,以'的scanf( “%d%d%d”,&垫[I],&垫第[i + 1], &mat [i + 2])''当然你需要考虑'out-of-bound'访问。 –

+0

只有三次'scanf'?可能是你可以把它们当成字符串,然后从中提取数字 – P0W

+3

@Uchia Itachi我想你忘了'&'之前垫[i] – jambono

回答

0

如果你不知道的行或列的数量,那么你可以做这样的事情:

读取一个每行一个成一个字符串。然后将空行字符上的当前行分割(例如使用strtok),并使用例如strtol将字符串解析为整数。

喜欢此伪代码

while (fgets(line)) 
{ 
    number_string = strtok(line, " "); 
    while (number_string != NULL) 
    { 
     mat[i++][j++] = strtol(number_string, NULL, 10); 
     number_string = strtok(NULL, " "); 
    } 
}