69,375
社区成员
发帖
与我相关
我的任务
分享
//原因是在于你定义的结构体
struct st
{
char name[20];//这里你是%s写入文件的,是按字符的
long num1;//而下边你是按%l写入的并非是ASCII写入文件的...
long math;
long totle;
}student;
wb+//用的是二进制写的的呀
#include <stdio.h>
struct st
{
char name[20];
long num1;
long math;
long totle;
}student;
int main()
{
FILE *fp;
int i;
if((fp=fopen("test.txt","wb+"))==NULL)
printf("wrong!!!");
for (i=0;i<10;i++)
{
scanf("%s%l%l",&student.name,&student.num1,&student.math);
student.totle=student.num1+student.math;
fseek(fp,i*sizeof(st),0);
//下边多了个(
if(fwrite(&student,sizeof(student),1,fp)!=1) printf("error!!!");
}
fclose(fp);//放在循环里就关了文件了
return 0;
}
//稍改动了下
#include<stdio.h>
struct st
{
char name[20];
long num1;
long math;
long totle;
}student;
int main()
{
FILE *fp;
int i;
if((fp=fopen("test.txt","wb+"))==NULL)
printf("wrong!!!");
for (i=0;i<10;i++)
{
scanf("%s%ld%ld",&student.name,&student.num1,&student.math);
student.totle=student.num1+student.math;
fseek(fp,i*sizeof(st),0);
if(fwrite(&student,sizeof(student),1,fp) != 1)
printf("error!!!");
fclose(fp);
}
return 0;
}