c - 如何正确地将值输入到矩阵中?

标签 c

我想将值输入到矩阵中,但由于某种原因我使用的代码“跳过”值。要在 3 X 3(9 个值)的矩阵中输入值,我需要输入 10。

#include<stdio.h>
#include<stdlib.h>
int matrix[3][3];
int i,j /*indexes for loops*/
for(i = 0; i < 3; i++) {
  for(j = 0; j < 3; j++) {
    printf("Enter value for position [%d][%d]: ", i,j);
    scanf("%d ",&matrix[i][j]);
  }
}

这是我从终端得到的:

Enter a value for position [0][0]: 0
1
Enter a value for position [0][1]: 0
Enter a value for position [0][2]: 0
Enter a value for position [1][0]: 0
Enter a value for position [1][1]: 0
Enter a value for position [1][2]: 1
Enter a value for position [2][0]: 0
Enter a value for position [2][1]: 0
Enter a value for position [2][2]: 0

矩阵打印如下:

0  1  0
0  0  0  
1  0  0

但我在接下来的计算中遇到了 0。

最佳答案

格式字符串中的空格告诉 scanf() 匹配零个或多个空白字符,直到匹配失败。空白字符包括空格 (' ')、换行符 ('\n')、回车符 ('\r') 和制表符 ('\t')。当格式字符串末尾出现空格时,scanf() 将尝试匹配输入中的空白字符,直到找不到匹配项。但是,scanf()只能在匹配失败或到达文件末尾时返回,因此,scanf("%d",&matrix[i][j])中%d后面的空格为此错误的原因。 去掉空格就可以正常工作了。

关于c - 如何正确地将值输入到矩阵中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55678054/

相关文章:

c - sqlite3_exec 有和没有显式事务

c - 数组初始化的奇怪值

c - 声明返回 int 的内联函数的正确方法

c - 如何循环遍历字符串中的每个字符?

c++ - 为什么这两个代码片段彼此等价(指针)

c - 如何创建一个 unicode 编辑控件来接受代码大于 127 的字符

c - Visual Studio 文件输出错误

C 数组声明语法

c - C 中的命名宏有限制/问题吗?

无法使用信号量的指针访问信号量(我认为我使用的是错误的)