检查矩阵中的行数是否等于c中给定的行数

  • 本文关键字:是否 c matrix user-input rows
  • 更新时间 :
  • 英文 :


我需要检查矩阵中的行数是否与给定的行数相同。用户输入矩阵的大小,然后输入矩阵的元素。这是我的输入代码:

int **mat1, row, col;
scanf("%d %d", &row, &col);
mat1 = (int**) malloc (sizeof(int*) * row);
for(int i = 0; i < row; ++i){
mat1[i] = (int*) malloc (sizeof(int) * col);
}
for(int i = 0; i < row; ++i) {
for(int j = 0; j < col; ++j) {
scanf("%d", &mat1[i][j]);
}
scanf("n");
}

我想检查一下情况,例如,当用户想要2行,但只输入一个时

2 3//行和列数

1 2 3//只输入一行

有什么办法吗?

您知道,当scanf()没有返回格式字符串中的转换说明符数(=应该读取的字段数(时,存在输入错误。由于您总是尝试读取1个整数,请检查scanf()是否返回与1:不同的内容

int input_successful = 1;  // assume input is ok
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
if (scanf(" %d", &mat1[i][j]) != 1) {
//     ^ this makes sure that the 'n' from last line is ignored
input_successful = 0;  // remember input is flawed
i = row;               // make sure the outer loop ends immediatly
break;                 // break out of the inner loop
}
}
// scanf("n");   // unnecessary
}
if (!input_successful) {
// handle error
}
// ...
// and free() the allocated memory when you are done using it!

相关内容

  • 没有找到相关文章

最新更新