模拟机中C语言出现的问题

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

虚拟模拟机中

问题相关代码,请勿粘贴截图

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct st_girl{
char name[50];
int age;
int height;
char sc[30];
char yz[30];
};
int main(){
struct st_girl stgirl;FILE *fp=0;fp=fopen("/root/Desktop/test/test.txt","w");
if(fp==0)
{
printf("打开文件失败\n");return -1;
}
strcpy(stgirl.name,"小红");stgirl.age=20;stgirl.height=120;
strcpy(stgirl.sc,"普通");strcpy(stgirl.yz,"漂亮");
fwrite(&stgirl,1,sizeof(stgirl),fp);
fclose(fp);
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct st_girl
{
char name[50];
int age;
int height;
char sc[40];
char yz[40];
};
int main()
{
FILE *fp=0;struct st_girl stgirl;fp=fopen("/root/Desktop/test/test.txt","rb");
if(fp==0)
{
printf("打开文件失败\n");return -1;
}
while(1)
{
if(fread(&stgirl,1,sizeof(struct st_girl),fp)==0)break;
printf("name=%s,age=%d,height=%d,sc=%s,yz=%s\n",
stgirl.name,stgirl.age,stgirl.height,stgirl.sc,stgirl.yz);
}
fclose(fp);
}

运行结果及报错内容

img


为什么yz没输出?

你两个结构中,定义的sc和yz长度不一样啊。写入部分是30个字符,读取部分却写成40个字符了