C语言写入文件,文件操作

2025-01-06 13:24:56
推荐回答(2个)
回答1:

struct student
{
int ID;
char name[10];
int age;
}stu[50];//首先定义结构体
//之后就是文件的读写操作了,这里是我程序的一部分,结构体不一样,其他操作都一样,比如你这里有3个成员scanf就输入3个就行
void AddStuInfo()//添加学生信息,完成
{

printf("\ninput score of student :\n");
printf("-------------------------------------------\n");
printf("NO. NAME SCORE1 SCORE2\n");
printf("-------------------------------------------\n");

scanf("%d %s %d %d %d",&s.Num,s.Name,&s.score[0],&s.score[1]);
s.ave = (s.score[0]+s.score[1])/2;

//从文件读数据 得 i大小
FILE *fp;

if((fp = fopen("student_info.txt","r")) == NULL){printf("can't open file");exit(0);}
for(i = 0 ;fread(&stu[i],sizeof(struct student_info),1,fp)!=0;i++)
{
printf("\n%4d %-8s %4d %4d %4d\n",stu[i].Num,stu[i].Name,
stu[i].score[0],stu[i].score[1],stu[i].ave);
}

fclose(fp);
int n = i;
fp = fopen("student_info.txt","w");
for(int i = 0;i {fwrite(&stu[i],sizeof(struct student_info),1,fp);}
// fseek( fp, 0, SEEK_END);

if(fwrite(&s,sizeof(struct student_info),1,fp) != 1)
{
printf("file write error!");
exit (0);
}
fclose(fp);

}

void ShowStuInfo()//显示学生信息,完成
{
FILE *fp1;

fp1 = fopen("student_info.txt","r");
printf("\ninput score of student :\n");
printf("-------------------------------------------\n");
printf("NO. NAME SCORE1 SCORE2 AVE\n");
printf("-------------------------------------------\n");
for(i = 0 ;fread(&stu[i],sizeof(struct student_info),1,fp1)!=0;i++)
{
if(stu[i].Num!=0)
printf("\n%4d %-8s %4d %4d %4d\n",stu[i].Num,stu[i].Name,
stu[i].score[0],stu[i].score[1],stu[i].ave);//类型不匹配的错误 }

}
fclose(fp1);
}

回答2:

//1楼回答的太多了

//看我的

#include
#include
main()
{
int flag=0;
FILE *fp;
char *p,strline[100]="\0",strinfo[100]="\0";
fp=fopen("data.txt","r");
puts("Please input ID");
gets(strinfo); //获取用户输入的ID
while (fgets(strline,99,fp)) //循环读每行用户信息
{
if ((p=strstr(strline,strinfo))!=NULL) //用strstr函数检查是否用户信息中有用户输入的ID
{
flag=1;
puts("此人信息已存在"); //提示存在
}
}
if (flag==0)
{
puts("无此人信息");
}
}