-1
我實際上沒有一個但2到3個程序使用文件和他們的命令,如fopen,fscanf,while(strcmp(input,「E」)! = 0).Atleast,我認爲這是問題所在。所有這些程序顯示相同的錯誤,即調試斷言失敗!表達式(stream!= null)。我嘗試了一切,但似乎沒有任何幫助。我不知道該怎麼做。請儘快回覆。這是其中一個程序:debug assertion expression stream!= null每當我使用fopen
# 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'之後,檢查返回值爲NULL。檢查'scanf'和'fscanf'的返回值。 –
請格式化您的代碼。 – ameyCU