m0_68173550 2022-05-26 22:35 采纳率: 100%
浏览 60
已结题

为什么没有输出啊?教我改一改吧

#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;
}

img

img

img

img

img

  • 写回答

2条回答 默认 最新

  • 关注

    print()函数没有实现啊
    stu.txt是文本文件,不能用"rb"二进制方式读取

    img

    img

    你题目的解答代码如下:

    #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;
    }
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月4日
  • 已采纳回答 5月27日
  • 创建了问题 5月26日

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题