C语言fwrite的问题
#include<stdio.h>#include<stdlib.h>#definesize2structs{chara[4];intb;intc;}s[size];vo...
#include<stdio.h>
#include<stdlib.h>
#define size 2
struct s
{
char a[4];
int b;
int c;
}s[size];
void main()
{
int i ;
FILE *fp;
if( (fp=fopen("in.dat","w"))==NULL)
{
printf("error");
exit(0);
}
for(i=0;i<size;i++)
{ printf("input a b c\n");
scanf("%s%d%d",&s[i].a,&s[i].b,&s[i].c);
fwrite(&s[i],sizeof(struct s),1,fp);
}
fclose(fp);
if((fp=fopen("in.dat","r"))==NULL)
{
printf("error");
exit(0);
} for(i=0;i<size;i++)
{
fread(&s[i],sizeof(struct s),1,fp);
printf("%s%d",s[i].a,s[i].b);
}
}
为什么b和c输出的都是乱码要怎么改
如果把SIZE 2改成SIZE 5,in.dat文件里还是乱码 展开
#include<stdlib.h>
#define size 2
struct s
{
char a[4];
int b;
int c;
}s[size];
void main()
{
int i ;
FILE *fp;
if( (fp=fopen("in.dat","w"))==NULL)
{
printf("error");
exit(0);
}
for(i=0;i<size;i++)
{ printf("input a b c\n");
scanf("%s%d%d",&s[i].a,&s[i].b,&s[i].c);
fwrite(&s[i],sizeof(struct s),1,fp);
}
fclose(fp);
if((fp=fopen("in.dat","r"))==NULL)
{
printf("error");
exit(0);
} for(i=0;i<size;i++)
{
fread(&s[i],sizeof(struct s),1,fp);
printf("%s%d",s[i].a,s[i].b);
}
}
为什么b和c输出的都是乱码要怎么改
如果把SIZE 2改成SIZE 5,in.dat文件里还是乱码 展开
3个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#define size 2
struct s
{
char a[20];
int b;
int c;
}s[size];
void main()
{
int i;
FILE *fp;
if( (fp=fopen("in.dat","w"))==NULL)
{ printf("error"); exit(0); }
for(i=0;i<size;i++)
{ printf("input a b c\n");
scanf("%s",s[i].a) ;
scanf("%d%d",&s[i].b,&s[i].c);
fwrite(&s[i],sizeof(struct s),1,fp);
}
fclose(fp);
if((fp=fopen("in.dat","r"))==NULL)
{ printf("error"); exit(0); }
for(i=0;i<size;i++)
{ fread(&s[i],sizeof(struct s),1,fp); printf("%s%d%d",s[i].a,s[i].b,s[i].c);
}
}
给你改好了,你试试看。
#include<stdlib.h>
#define size 2
struct s
{
char a[20];
int b;
int c;
}s[size];
void main()
{
int i;
FILE *fp;
if( (fp=fopen("in.dat","w"))==NULL)
{ printf("error"); exit(0); }
for(i=0;i<size;i++)
{ printf("input a b c\n");
scanf("%s",s[i].a) ;
scanf("%d%d",&s[i].b,&s[i].c);
fwrite(&s[i],sizeof(struct s),1,fp);
}
fclose(fp);
if((fp=fopen("in.dat","r"))==NULL)
{ printf("error"); exit(0); }
for(i=0;i<size;i++)
{ fread(&s[i],sizeof(struct s),1,fp); printf("%s%d%d",s[i].a,s[i].b,s[i].c);
}
}
给你改好了,你试试看。
展开全部
scanf("%s%d%d",&s[i].a,&s[i].b,&s[i].c);这里面&s[i].a这个不对,s[i].a本身就是字符串的指针了,前面在加个&表示取的存放这个指针的地址,通过scanf赋值进去了后,就全乱了
改为如下scanf("%s%d%d",s[i].a,&s[i].b,&s[i].c);
改为如下scanf("%s%d%d",s[i].a,&s[i].b,&s[i].c);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
文件打开方式 由 r+ 改为 a+
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询