说得出来 2017-05-31 10:45 采纳率: 0%
浏览 735

大神求救,用C写的一个信息管理类的系统先delenews后再displayall就会报错

void deletenews()
{
int i,f=0;
//fpp = fopen_s(&fp, "students.bat", "a+");
fqq = fopen_s(&fq, "tmp.bat", "a+");
if (fpp != 0 && fqq!=0)
{
system("cls");
puts("===================通知================");
puts("| |");
puts("| 系统初始化失败,任意键退出! |");
puts("| |");
puts("=======================================");
_getch();
exit(-1);
}
displayall();
printf("请输入你想删除的行:");
scanf_s("%d",&i);
while (f != i)
{
fseek(fp, 0, SEEK_SET);
fread(fp, sizeof(student),1,fq);
fwrite(fp, sizeof(student),1,fq);
f++;
}
fclose(fp);
fclose(fq);
remove("students.bat");
rename("tmp.bat","students.bat");
fpp = fopen_s(&fp, "students.bat", "a+"); //重新建立同学信息文件
return;
}

void displayall()
{
int i = 1,j=0;
student stu;
system("cls");
//fpp = fopen_s(&fp, "students.bat", "a+");
fseek(fp, 0, SEEK_SET); //VS2015系统报错的行
if (fread(&stu, sizeof(student), 1, fp) == EOF)
{
system("cls");
puts("===================通知=================");
puts("| |");
puts("| 同学目录展现失败! |");
puts("| |");
puts("========================================");
exit(-1);
}
printf("编号\t姓名\t学号\t电话号码\tQQ号码\t宿舍号\n");
while (!feof(fp))
{
printf("%d\t",i++);
printf("%s\t", stu.name);
printf("%ld\t", stu.num);
printf("%ld\t", stu.phone);
printf("%ld\t", stu.qqnum);
printf("%d\t", stu.dorm);
printf("\n");
fread(&stu, sizeof(student), 1, fp);
}
return;
}

  • 写回答

1条回答 默认 最新

  • devmiao 2017-05-31 15:47
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料