Dev C 编译此代码,但在文件创建期间给出错误 3221225477
Dev C compiles this code, but during file creation gives err 3221225477
我试图做一些家庭作业以在假期跟上进度,但我陷入了这个错误
我尝试过使用 GDB 和 Dev-C++ 进行编译,但由于不同的原因,它们都无法做到这一点
void creazioneFile(char s[12]){
FILE *fp;
char cod[10],tit[20],autore[20],editor[20],nomeFile[20];
int annoPub,risp;
sprintf(nomeFile, "%s.txt",s);
fopen(nomeFile,"w");
if(fp==NULL){
printf("Si e\' verificato un errore");
return;
}
do{
printf("\nInserire codice libro: ");
scanf("%s",cod);
printf("\nInserire titolo del libro: ");
scanf("%s",tit);
printf("\nInserire autore del libro: ");
scanf("%s",autore);
printf("\nInserire anno di pubblicazione del libro: ");
scanf("%d",&annoPub);
printf("\nInserire editore libro: ");
scanf("%s",editor);
fprintf(fp,"%s %s %s %d %s\n",cod,tit,autore,annoPub,editor);
printf("Si vuole inserire un altro record (1=si/0=no):");
scanf("%d",&risp);
}while(risp!=0);
fclose(fp);
}
输出应该提供一个选项,可以根据需要重复循环,但它显示了这个错误,程序强制我退出
您打开文件但没有保存文件指针。所以你最终写入了一个未初始化的文件描述符。产生独特崩溃的好方法!应该是:
fp = fopen(nomeFile,"w");
PS:如果你注意编译器警告,这些问题很容易被发现!
我认为您要做的是打开变量 nomeFile
指定的文件,然后将一些字符串写入该文件。对 fopen
return 的调用是一个文件句柄 - 您需要将其保存在 fp
中!
代码仍然可以编译,因为语句本身是有效的 - 它的 return 值从未被存储。
我试图做一些家庭作业以在假期跟上进度,但我陷入了这个错误
我尝试过使用 GDB 和 Dev-C++ 进行编译,但由于不同的原因,它们都无法做到这一点
void creazioneFile(char s[12]){
FILE *fp;
char cod[10],tit[20],autore[20],editor[20],nomeFile[20];
int annoPub,risp;
sprintf(nomeFile, "%s.txt",s);
fopen(nomeFile,"w");
if(fp==NULL){
printf("Si e\' verificato un errore");
return;
}
do{
printf("\nInserire codice libro: ");
scanf("%s",cod);
printf("\nInserire titolo del libro: ");
scanf("%s",tit);
printf("\nInserire autore del libro: ");
scanf("%s",autore);
printf("\nInserire anno di pubblicazione del libro: ");
scanf("%d",&annoPub);
printf("\nInserire editore libro: ");
scanf("%s",editor);
fprintf(fp,"%s %s %s %d %s\n",cod,tit,autore,annoPub,editor);
printf("Si vuole inserire un altro record (1=si/0=no):");
scanf("%d",&risp);
}while(risp!=0);
fclose(fp);
}
输出应该提供一个选项,可以根据需要重复循环,但它显示了这个错误,程序强制我退出
您打开文件但没有保存文件指针。所以你最终写入了一个未初始化的文件描述符。产生独特崩溃的好方法!应该是:
fp = fopen(nomeFile,"w");
PS:如果你注意编译器警告,这些问题很容易被发现!
我认为您要做的是打开变量 nomeFile
指定的文件,然后将一些字符串写入该文件。对 fopen
return 的调用是一个文件句柄 - 您需要将其保存在 fp
中!
代码仍然可以编译,因为语句本身是有效的 - 它的 return 值从未被存储。