所以我試圖解決這個問題,但似乎沒有任何工作。我是一名參加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