嘿我在Visual Studio中尝试了很多程序,当我尝试从流中获取输入时(大多数情况下使用fscanf
),它总是抛出一个debug assertion failed error ..
继续说:
stream != NULL
。因为我多次得到这个错误..我假设我使用fscanf
的方式存在缺陷。如果有人可以告诉我使用情况,或者给我一个示例代码,说明简单的用法,我将不胜感激..!
我试着查找错误..在大多数地方它说我没有关闭文件..但我有,我有点困惑..我感谢任何帮助..非常感谢:)
printf("Enter No of states\n");
Q=5;
// scanf("%d",&Q);
// READING ZERO MATRIX
// reading the matrix from f0.sta
{
FILE *fp;
fp = fopen("c:\\tc\\fuzzy\\f0.sta","r");
for(i=1;i<=Q;i++)
for(j=1;j<=Q;j++)
fscanf(fp,"%f",&a0[i][j]);
fclose(fp);
}
// READING ONE MATRIX
// reading the matrix from f0.sta
FILE *fp;
fp = fopen("c:\\tc\\fuzzy\\f1.sta","r");
for(i=1;i<=Q;i++)
for(j=1;j<=Q;j++)
fscanf(fp,"%f",&a1[i][j]);
fclose(fp);
这是代码位。
答案 0 :(得分:3)
听起来fp
为NULL。最可能的原因是其中一个(或两个)文件不存在或无法打开(例如,因为某些其他进程正在使用它)。
我首先在两次fopen()
调用后添加一些错误检查:将结果与NULL
进行比较,如果是NULL
,请检查errno
。
答案 1 :(得分:0)
你的循环计数器从1开始而不是0,这对C编程来说很奇怪。可能发生的是你没有在阵列中分配足够的空间,即你有
double a[5][5];
何时需要
double a[6][6];
所以你要踩到数组末尾的东西。最好让你的循环
for(i=0;i<Q;i++)
for(j=0;j<Q;j++)
所以你不要浪费数组中的0个插槽。