所以我试图解决这个问题,但似乎没有任何工作。我是一名参加C++课程的学生,请原谅我的无知。在C++中顽固的“调试断言失败”错误
正如标题所说我不断收到一个错误框,是这样的
“调试断言失败 计划:I:(文件路径)
文件:F:(文件路径)
行: 52
表达:(!流= NULL)”
我认为这是与指针,但我不知道...... 我的朋友都使用这个确切的代码,所以我开始认为上帝恨我
很抱歉,如果我在我的问题没有做错任何事
这里是我的代码
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define NROW 7
#define NCOL 8
#define FILEIN "input_practice.txt"
#define FILEOUT "output_practice.txt"
void GJ(double A[NROW][NCOL]);
void pivot(double A[NROW][NCOL], int j);
void norm (double A[NROW][NCOL], int j);
void diag (double A[NROW][NCOL], int j);
void swap(double *x, double *y);
void main()
{
//define variables
double A[NROW][NCOL];
int i, j;
FILE *filein_ptr;
FILE *fileout_ptr;
//open files
filein_ptr=fopen(FILEIN,"r");
fileout_ptr=fopen(FILEOUT,"w");
//get input from file
for (j=0; j<NROW; j++)
{
for (i=0; i<NCOL; i++)
{
fscanf(filein_ptr,"%lf",&A[j][i]);
}
}
//Run Gauss-Jordan
GJ(A);
//output
fprintf(fileout_ptr,"Solution Matrix:\n");
for (j=0; j<NROW; j++)
{
for (i=0; i<NCOL; i++)
{
fprintf(fileout_ptr,"%lf",A[i][j]);
fprintf(fileout_ptr," ");
}
fprintf(fileout_ptr,"\n");
}
//close files
fclose(filein_ptr);
fclose(fileout_ptr);
}
void GJ(double A[NROW][NCOL])
{ //Run it
int j;
for (j=0;j<NROW;j++)
{
pivot(A,j);
norm(A,j);
diag(A,j);
}
}
void pivot(double A[NROW][NCOL], int j)
{
int maxrow=j,i;
//find max values
for (i=j; i < NROW ; i++)
{
if (fabs(A[i][j]) > fabs(A[maxrow][j]))
{ maxrow=i;
}
}
if (maxrow != 0)
{
for (i=j; i < NCOL; i++)
{
swap(&A[j][i],&A[maxrow][i]);
}
}
}
void norm (double A[NROW][NCOL], int j)
{
//temp
double temp=A[j][j];
int i;
//Normalize
for(i=j; i < NCOL ; i++)
{ A[j][i] = (A[j][i]/temp);
}
}
void diag (double A[NROW][NCOL], int j)
{
//define
double temp;
int i,k;
//Diagonalize
for(i = 0; i < NROW; i++)
{
if(i != j)
{
temp = A[i][j];
for(k=j; k < NCOL; k++)
{
A[i][k]= A[i][k] - (temp * A[j][k]);
}
}
}
}
void swap(double *x, double *y)
{
//Swap
double z;
z=*x;
*x=*y;
*y=z;
}
这是很多的代码。你可以把它分解成一个最小的例子吗? – user3553031
'fprintf(fileout_ptr,“%lf”,A [i] [j]);'是'fprintf(fileout_ptr,“%lf”,A [j] [i]);'in main? –
好,所以我认为你是对的,我改变了我的代码,现在我没有得到调试断言的事情了......但现在我得到这个错误信息:“1> LINK:致命错误LNK1168:无法打开我:\ ME400 \ C++ \ Practice1 \ Debug \ Practice1.exe编写“我不知道这是什么意思:( – user3610591