gpt4 book ai didi

c - 每次我使用 fopen 时调试断言表达式流!=null

转载 作者:行者123 更新时间:2023-11-30 19:42:04 26 4
gpt4 key购买 nike

实际上,我在使用文件及其命令(如 fopen、fscanf、while(strcmp(input,"E")!=0))的程序中遇到的问题不是一个,而是 2 到 3 个。至少,我认为这就是问题所在。所有这些程序都显示相同的错误,即调试断言失败!表达式(流!= null)。我尝试了一切,但似乎没有任何效果,请帮忙。我不明白该怎么办。请尽快回复。这是其中一个节目:

    # include <stdio.h> 
# include <conio.h>
# include <string.h>
# include <stdlib.h>
void main()
{ char add[6],length[10],input[10],binary[12],bitmask[12],relocbit;
int start,inp,len,i,address,opcode,addr,actualadd;
FILE *fp1=fopen("relinput.dat","r");
FILE *fp2=fopen("reloutput.dat","w");
system("cls");
printf("Enter the actual starting address : ");
scanf("%d",&start);
fscanf(fp1,"%s",input);
while(strcmp(input,"E")!=0)
{ if(strcmp(input,"H")==0)
{ fscanf(fp1,"%s",add);
fscanf(fp1,"%s",length);
fscanf(fp1,"%s",input);
}
if(strcmp(input,"T")==0)
{ fscanf(fp1,"%d",&address);
fscanf(fp1,"%s",bitmask);
address+=start;
len=strlen(bitmask);
for(i=0;i<len;i++)
{ fscanf(fp1,"%d",&opcode);
fscanf(fp1,"%d",&addr);
relocbit=bitmask[i];
if(relocbit=='0')
actualadd=addr;
else
actualadd=addr+start;
fprintf(fp2,"%d\t%d%d\n",address,opcode,actualadd);
address+=3;
}
fscanf(fp1,"%s",input);
}
}
fclose(fp1);
fclose(fp2);
printf("FINISHED");
getch();
}

最佳答案

您需要对 fopen 过程以及一般情况进行错误检查。此错误很可能是由于 fscanf 或 fopen 返回了您未捕获的意外值所致。

更多有用的提示:

  • 如果您的 IDE 允许,请使用断点进行调试
  • 将代码格式化为更加一致且易于阅读
  • 对函数进行评论,以便为 future 的读者或 future 的您阐明它们的用途。

关于c - 每次我使用 fopen 时调试断言表达式流!=null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32866631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com