关于文件输入的问题

ypf_1227 2009-05-02 01:08:33


void insertdata(FILE *file)
{
int i,j,SIZE,length;


printf("请输入字段的个数");
scanf("%d",&SIZE);
printf("请输入记录的个数");
scanf("%d",&length);
for(i=0;i<length;i++)
{
printf("please input the id.\n");
scanf("%d",&recordid.id);
fprintf(file,"%d",recordid.id);
for(j=0;j<SIZE;j++)
{
printf("请输入字段的类型.\n");
scanf("%s",&recorddata.type);
if(recorddata.type == 'i')
{
fprintf(file,"%s\t",recorddata.type);
printf("please input the data");
scanf("%d",&recorddata.idata);
fprintf(file,"%d\t",recorddata.idata);
}
else if(recorddata.type == 'c')
{
fprintf(file,"%s\t",recorddata.type);
printf("please input the data");
scanf("%s",recorddata.cdata);
fprintf(file,"%s\t",recorddata.cdata);
}
else
{
printf("the type is wrong");

}
}
fputs("#\n",file);
}
}


在我执行printf("请输入字段的类型.\n");
scanf("%s",&recorddata.type);
输入完发生错误自动关闭窗口
请问是怎么回事儿
...全文
66 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingkundu 2009-05-02
  • 打赏
  • 举报
回复
如果是:scanf("%s",&recorddata.type);那就说明 recorddata.type是一个字符串,比如你输入的是“i”,那保存的就是:i 和'\0'两个字符。如果是这样和'i'相比较的话什么时候会相等呢??
所以,scanf("%c",&recorddata.type);是正确的,如果recorddata.type不是char型的话也要重新改成char型的!!!否则一个字符串和一个字符什么时候会相等呢?????
rjianfeili 2009-05-02
  • 打赏
  • 举报
回复
printf("请输入字段的类型.\n");
scanf("%s",&recorddata.type);

改成:

printf("请输入字段的类型.\n");
scanf("%s",recorddata.type);


字符数组
dongpf 2009-05-02
  • 打赏
  • 举报
回复
楼主,对字符数组赋值的话,直接scanf("%s",recorddata.type);就可以,不用加&符号。
沙漠里的海豚 2009-05-02
  • 打赏
  • 举报
回复
你的recorddata.type是char类型的数组吗?
是的话不需要加前面的地址符号的,直接写:

scanf("%s", recorddata.type);
ypf_1227 2009-05-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 baiwei156 的回复:]
C/C++ code
scanf("%s",&recorddata.type);//这里修改如下
scanf("%c",&recorddata.type);//
[/Quote]

如果是这个原因我就不在这发帖了
baiwei156 2009-05-02
  • 打赏
  • 举报
回复

scanf("%s",&recorddata.type);//这里修改如下
scanf("%c",&recorddata.type);//

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧