这是源码
应该是读文件出错了,把fscanf后面的代码放在if语句中,如下
while(!feof(fp))
{
if(fscanf(fp,"..这里是你原来的代码..") ==10) //成功读取到10个元素
{
if(strcmp(number,stu.name)==0)
{
//...
}else{
//...
}
}
}
代码这样修改,供参考:
void Delete()
{
FILE* fp, * fp1;
char number[10], buff[1024];
printf("输入删除的学生学号:");
scanf("%s", number);
fp = fopen("student_12.txt", "r");
fp1 = fopen("temp.txt", "w");
int flag = 0;
fscanf(fp, "%s", buff);
fprintf(fp1, "%s\n", buff);
while (!feof(fp)) {
fscanf(fp, "%s %s %d %s %d %d %d %d %d %d\n",/* ..... */);
//... 原代码
fprintf(fp1, "%s %s %d %s %d %d %d %d %d %d\n",/*.... */);
//... 原代码
}
fclose(fp);
fclose(fp1);
if(!flag)
//... 原代码
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!我们看代码可以更容易理解。
int a[3][4];
int(*p)[4];//数组指针,p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为4个整型的数组。所以p是一个指针,指向一个数组叫指针数组。
//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。
一个数组,叫数组指
int *q[3];//指针数组
p = a;
for (int i = 0; i < 3; ++i)
{
q[i] = a[i];数组名一定不能放在左值
}
int a[3][4];//a(int(*)[4])a[i](int *) a[i][j](int)
int b[10];//b(int *) b[i](int)
从二维数组来理解,首先先介绍几个概念。
a[0] | ||||
a[1] | ||||
a[2] |
很抱歉,你提供的参考资料似乎与问题不匹配,无法给出解决方案。另外,你提到了学生综合测评系统删除和修改功能在使用文件覆盖的方法时出现文件乱码的问题,但是并未提供详细的信息,例如具体的操作步骤、代码实现、文件格式等。建议你提供更加详细的信息,以便给出正确的解决方案。