C语言读写的问题

来源:百度知道 编辑:UC知道 时间:2024/06/09 10:11:57
struct qw
{
int a;
int b;
char c;
}*p,*p1;

main()
{
FILE *fp;
if((fp=fopen("a.txt","wb+"))==NULL)
{
printf("……");
getch();
exit(1);
}
scanf("%d%d%c",&p->a,&p->b,&p->c);
fwrite(p,sizeof(struct qw),1,fp);
rewind(fp);
fread(p1,sizeof(struct qw),1,fp);
printf("%d\n%d\n%c\n",p1->a,p1->b,p1->c);
fclose(fp);
}

随便写的,有个问题就是输完一个数后回车,因为是输入三个,所以我想应该是按三次回车,但是运行后只是按两次...
最后一个字符还必须和第二个数字一起输入,怎么才能分开?还是说就是这样?
是没什么问题,就是想能不能分开来输入,输完数字再输字符

你的指针P没有指向一个结构体变量,而直接赋值是错误的
scanf("%d%d%c",&p->a,&p->b,&p->c);
这样的野指针很容易造成内存数据出错。
struct qw
{
int a;
int b;
char c;
}data,data1,*p=&data,*p1=&data1;

main()
{
FILE *fp;
if((fp=fopen("a.txt","wb+"))==NULL)
{
printf("……");
getch();
exit(1);
}
scanf("%d%d%c",&p->a,&p->b,&p->c);
fwrite(p,sizeof(struct qw),1,fp);
rewind(fp);
fread(p1,sizeof(struct qw),1,fp);
printf("%d\n%d\n%c\n",p1->a,p1->b,p1->c);
fclose(fp);
}

应该没问题 的