#include <stdio.h>
#include <stdlib.h>
typedef struct{
char id[15];
char name[15];
int score;
char password[8];
}stuStru;
//从文件读用户信息
int readFromFile(stuStru s[],char *filename){
FILE *fp;
int n=0,k;
fp=fopen(filename, "rb"); //打开文件
if(fp==NULL){
printf("读取数据失败!\n");
return 0;
}
else{
while(1){
k=fread(s+n,sizeof(stuStru), 1, fp); //读取一条记录
if (k!=1) break; //未读取成功表明文件已结束
n++;
}
fclose(fp);
return n; //返回成功读取的记录总数
}
}
//将用户信息写入文件 (存盘)
void writeToFile(stuStru s[], char *filename, int n){
FILE *fp;
fp=fopen(filename, "wb"); //打开文件
if (fp!=NULL){
fwrite(s,sizeof(stuStru), n, fp); //写文件
fclose(fp);
}
else
printf("文件保存失败!\n");
}
//打印
void print(stuStru s[],int n)
int main(){
stuStru s[100],t[100];
int n;
n=readFromFile(s,"stu.txt");
print(s,n);
writeToFile(s,"stu1.txt",n);
n=readFromFile(t,"stu1.txt");
printf("%d",n);
print(t,n);
return 0;
}
print()函数没有实现啊
stu.txt是文本文件,不能用"rb"二进制方式读取
你题目的解答代码如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char id[15];
char name[15];
int score;
char password[8];
} stuStru;
//从文件读用户信息
int readTextFile(stuStru s[], char *filename)
{
FILE *fp;
int n = 0, k;
fp = fopen(filename, "r"); //打开文件
if (fp == NULL)
{
printf("读取数据失败!\n");
return 0;
}
else
{
while (1)
{
k = fscanf(fp,"%s%s%d%s",s[n].id,s[n].name,&s[n].score,s[n].password); //读取一条记录
if (k < 1)
break; //未读取成功表明文件已结束
n++;
}
fclose(fp);
return n; //返回成功读取的记录总数
}
}
//从文件读用户信息
int readFromFile(stuStru s[], char *filename)
{
FILE *fp;
int n = 0, k;
fp = fopen(filename, "rb"); //打开文件
if (fp == NULL)
{
printf("读取数据失败!\n");
return 0;
}
else
{
while (1)
{
k = fread(s + n, sizeof(stuStru), 1, fp); //读取一条记录
if (k != 1)
break; //未读取成功表明文件已结束
n++;
}
fclose(fp);
return n; //返回成功读取的记录总数
}
}
//将用户信息写入文件 (存盘)
void writeToFile(stuStru s[], char *filename, int n)
{
FILE *fp;
fp = fopen(filename, "wb"); //打开文件
if (fp != NULL)
{
fwrite(s, sizeof(stuStru), n, fp); //写文件
fclose(fp);
}
else
printf("文件保存失败!\n");
}
//打印
void print(stuStru s[], int n)
{
int i;
for (i = 0; i < n; i++)
{
printf("%s\t%s\t%d",s[i].id,s[i].name,s[i].score);
printf("\n");
}
}
int main()
{
stuStru s[100], t[100];
int n;
n = readTextFile(s, "stu.txt");
print(s, n);
writeToFile(s, "stu1.txt", n);
n = readFromFile(t, "stu1.txt");
printf("%d\n", n);
print(t, n);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!