分段错误 11:尝试使用 cin 输入 B[1] 时
Segmentation fault 11: while trying to input B[1] using cin
我在 运行 以下代码中遇到问题。它给我一个分段错误作为运行时错误。
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Enter n: ";
cin >> n;
float A[n][n], x[n], B[n], L[n][n], U[n][n], m[n][n], Aug[n][n + 1];
//Initializing matrix A,L,U
cout << "Enter A: \n";
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> A[i][j];
U[i][j] = A[i][j];
Aug[i][j] = A[i][j];
if (i == j) {
L[i][j] = 1;
}
else {
L[i][j] = 0;
}
}
}
//Initialising matrix B
cout << "Enter B: \n";
for (int i = 0; i < n; i++) {
cin >> B[i];
cout << "done" << i;
Aug[i][n] = B[i];
}
// ...
return 0;
}
输入:
n=2, A={2,5,-3,-4}, B={0,0}
当我尝试输入 B[1]
时发生错误,所以 done0 被打印出来,但是 done1 没有。我只是无法弄清楚这个错误的原因是什么,因为我没有看到 B[1]
无法访问的任何原因。
你误诊了问题。分段错误发生在 for
循环完成后,在您没有向我们展示的代码中(// ...
部分)。 done1
不会打印出来,因为您的代码在有机会刷新输出缓冲区之前就出错了。您的 cout << "done" << i;
只是将内容放入输出缓冲区,没有任何东西可以刷新缓冲区。
我在 运行 以下代码中遇到问题。它给我一个分段错误作为运行时错误。
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Enter n: ";
cin >> n;
float A[n][n], x[n], B[n], L[n][n], U[n][n], m[n][n], Aug[n][n + 1];
//Initializing matrix A,L,U
cout << "Enter A: \n";
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> A[i][j];
U[i][j] = A[i][j];
Aug[i][j] = A[i][j];
if (i == j) {
L[i][j] = 1;
}
else {
L[i][j] = 0;
}
}
}
//Initialising matrix B
cout << "Enter B: \n";
for (int i = 0; i < n; i++) {
cin >> B[i];
cout << "done" << i;
Aug[i][n] = B[i];
}
// ...
return 0;
}
输入:
n=2, A={2,5,-3,-4}, B={0,0}
当我尝试输入 B[1]
时发生错误,所以 done0 被打印出来,但是 done1 没有。我只是无法弄清楚这个错误的原因是什么,因为我没有看到 B[1]
无法访问的任何原因。
你误诊了问题。分段错误发生在 for
循环完成后,在您没有向我们展示的代码中(// ...
部分)。 done1
不会打印出来,因为您的代码在有机会刷新输出缓冲区之前就出错了。您的 cout << "done" << i;
只是将内容放入输出缓冲区,没有任何东西可以刷新缓冲区。