想问一下这个c语言程序运行后为什么是乱码?文件

来源:百度知道 编辑:UC知道 时间:2024/05/13 08:38:03
想问一下这个c语言程序运行后为什么是乱码?

#include<stdio.h>
#include <stdlib.h>
#include<string.h>

struct rat
{
char num[6];
int weight;
char hat[11];
}rat[3]={{"abcdd",34,"asdeqf"},{"bcddd",54,"aewqwe"},{"veedd",12,"eegrwqe"}};

int main()
{
FILE *fp1,*fp2;
int t=0;
char temp_hat[10]={0},temp_num[5];
int n=3,i,j;
//scanf("%d",&n);
/*for(i=0;i<n;i++)
{
scanf("%s %d %s\n",&rat[i].num,&rat[i].weight,&rat[i].hat);
}*/

if((fp1=fopen("IN.txt","w"))==NULL)
{printf("cannot open file\n");}
if(fwrite(&n,sizeof(n),1,fp1)!=1)
printf("file write error\n");
for(i=0;i<n;i++)
{
if(fwrite(&rat[i],sizeof(struct rat),1,fp1)!=1)
printf("file write error\n");
}

修改之后:
#include<stdio.h>
#include <stdlib.h>
#include<string.h>

struct rat
{
char num[6];
int weight;
char hat[11];
}rat[3]={{"abcdd",34,"asdeqf"},{"bcddd",54,"aewqwe"},{"veedd",12,"eegrwqe"}};

int main()
{
FILE *fp1,*fp2;
int t=0;
char temp_hat[10]={0},temp_num[5];
int n=3,i,j;
scanf("%d",&n);//修改处
for(i=0;i<n;i++)//修改处
{
scanf("%s %d %s\n",&rat[i].num,&rat[i].weight,&rat[i].hat);
}//修改处

if((fp1=fopen("IN.txt","w"))==NULL)
{printf("cannot open file\n");}
if(fwrite(&n,sizeof(n),1,fp1)!=1)
printf("file write error\n");
for(i=0;i<n;i++)
{
if(fwrite(&rat[i],sizeof(struct rat),1,fp1)!=1)
printf("file write error\n");
}
fclose(fp1)