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 之后的空格 是导致此错误的原因。删除空间,它将正常工作。
推荐阅读
- javascript - dayjs 返回格式错误的日期
- xml - 如何修复“此文档已经有一个 'DocumentElement' 节点。”
- php - 此路由不支持 put
- html - 如何处理引导程序中的网格,网格内的网格
- javascript - JS过滤器/映射来获取对象之间
- c# - 当我打开一个新表单两次时,OpenForms 不会运行
- python - 'tensorflow_core.estimator' 没有属性'inputs',为什么会发生这种情况?
- sql - 将表名和行信息传递到 INSERT INTO 存储过程
- python - 设置现有 numpy 对象的 __hash__
- reactjs - 在.net core react app中获取环境变量以显示,使用azure设置环境变量