求助:关于fopen()函数的问题
fopen()能不能按照"a+"的方式读取 *.dat文件,然后使用循环,将数据逐个读取?还是 *.dat 文件只能用二进制的方式读写?。
另外问个问题
if(newornot)
{
tail=(pbook)malloc(sizeof(book));
head->next=tail;
tail->pioneer=head;
tail->next=NULL;
while(!feof(fp))
{
if((newdata=(pbook)malloc(sizeof(book)))!=NULL)
printf("1\n");
newdata->next=tail;
newdata->pioneer=tail->pioneer;
tail->pioneer->next=newdata;
tail->pioneer=newdata;
fscanf(fp,"%d%s%d%s%d",&booknum,bookname,&studentnum,studentname,&lentout);
newdata->num=booknum;
strcpy(newdata->name,bookname);
newdata->stu_num=studentnum;
strcpy(newdata->stu_name,studentname);
newdata->lent_out=lentout;
count++;
}
}
执行这个循环的时候,第一遍没有出错,屏幕能显示出“1”,但是到了第二遍就不行了,第二遍没有显示出“1”,而且还出现
Windows 已在 a.exe 中触发一个断点。
其原因可能是堆被损坏,这说明 a.exe 中或它所加载的任何 DLL 中有 Bug。
原因也可能是用户在 a.exe 具有焦点时按下了 F12。
输出窗口可能提供了更多诊断信息。
这个错误信息。
我是以"a+"方式打开 *.dat 文件的