gpt4 book ai didi

c - 为什么我的 C 程序要求的输入多于应有的输入?额外的输入甚至没有做任何事情

转载 作者:行者123 更新时间:2023-12-01 08:14:19 24 4
gpt4 key购买 nike

那部分的代码,如果你想编译它在下面。

基本上我必须获取以下数据并将其输入到程序中:

4 5
12 5 7 0 -3
9 11 2 5 4
0 -5 9 6 1
2 12 93 -15 0
5 3
7 1 31
0 0 5
-5 -3 2
9 41 11
0 13 31

前4 5 和5 3 代表第一个和第二个矩阵的维度,而后面的数据是矩阵的数据。

问题是,当我复制并粘贴它时,它会要求再输入一次,当我输入任何内容(比如 84)时,它会完美运行(输出方面),而 84 似乎什么都不做。它为什么要这个额外的?

#include <stdio.h>

int main(int argc, char *argv[]) {
int rows1 = 1, columns1 = 1, rows2 = 1, columns2 = 1; // variables for number of rows and columns in each matrix
int i, j, k; // loop variables

// These will affect the loop's length
scanf("%d %d", &rows1, &columns1);
int matrix1[rows1][columns1];
for (i = 0; i < rows1; i++) {
for (j = 0; j < columns1; j++) {
scanf("%d ", &matrix1[i][j]);
}
}


scanf("%d %d", &rows2, &columns2);
int matrix2[rows2][columns2];
for (i = 0; i < rows2; i++) {
for (j = 0; j < columns2; j++) {
scanf("%d ", &matrix2[i][j]);
}
}
}

最佳答案

你最后的 scanf 需要两件事

                scanf("%d ", &matrix[i][j]);
// 112

事物1是一个整数
事物 2 是零个或多个空格

如果您向 scanf 提供“31”(或“31”或“31\n”),它将期待更多 空白。一旦您提供“84”,它就会知道空格已经结束并继续执行程序。


建议:从 scanf 转换说明符中删除所有空格:scanf("%d%d") 很好! "%d" 转换说明符已删除数字前的空格。

更好的是,使用 fgets() 读取数据并使用 sscanf() 解析

关于c - 为什么我的 C 程序要求的输入多于应有的输入?额外的输入甚至没有做任何事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com