koo364 2021-12-24 11:48 采纳率: 100%
浏览 22
已结题

for循环初始化无效?

问题遇到的现象和发生背景

在练习文件操作时,遇到一个问题,就是读取文件并输出时有乱码。

问题相关代码,请勿粘贴截图
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
typedef struct stu
{
    char id[10];
    char name[20];
}stu;
void output(char *filename);
int main()
{
    int n,i;
    stu *s;
    char path[1024],name[20],id[10];
    scanf("%d",&n);
    getcwd(path,1024);
    strcat(path,"\\data.bin");
    s=(stu*)malloc(sizeof(stu)*n);
    for(i=0;i<n;i++)
    {
        scanf("%s %s",&id,&name);
        strcpy(s[i].id,id);
        strcpy(s[i].name,name);
    }
    FILE *fp1=fopen(path,"wb");
    fwrite(s,sizeof(stu),n,fp1);
    fclose(fp1);
    output(path);
    return 0;
}
void output(char*filename)
{
    int n,j;
       FILE* fp=fopen(filename,"rb");
    fseek(fp,0,SEEK_END);
    n=ftell(fp);
    n=n/sizeof(stu);
    rewind(fp);
     stu *a;
     a=(stu*)malloc(sizeof(stu)*n);
    fread(a,sizeof(stu),n,fp);
    printf("%s %s\n",a[0].id,a[0].name);
    for( j=0;j<n;j++);
    {
        printf("%s %s\n",a[j].id,a[j].name); 
    }
    fclose(fp);
}
运行结果及报错内容

调试以后发现是最后的for循环,j会直接等于1

img

img

我的解答思路和尝试过的方法
我想要达到的结果

希望可以帮我解答,感谢

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2021-12-24 12:43
    关注

    44行for语句后面的分号删掉
    图片中是45行

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

报告相同问题?

问题事件

  • 系统已结题 1月1日
  • 已采纳回答 12月24日
  • 创建了问题 12月24日

悬赏问题

  • ¥15 python变量和列表之间的相互影响
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)