有关缓冲区和读写文件用二进制方式的问题

printf("请输入姓名:");
scanf("%s", &customerinf[i].name);
printf("请输入身份证号:");
scanf("%d", &customerinf[i].num);
printf("请输入性别:");
scanf("%s", &customerinf[i].sex);
printf("请输入联系方式:");
scanf("%d", &customerinf[i].phone);
这些输入完之后我的文本文件里只有名字,别的没有,是缓冲区的问题还是二进制读写的问题

手机号11位,肯定不能用整数,身份证号更是如此

都得用char 变量名[按需要写大小],
一般整型数字上限2的32次方-1 不够存的。
假如你用整数,那么肯定不够存,而计算机又不检查越界的问题, 那么就导致了溢出, 然后导致擦除了其他地方的数据。然后就会出现乱七八糟的东西。
这时候的计算机存的是有东西,但是已经解释不成你想要的东西了,整型的不够存,数据不全,解释不出来原有数据,其他的虽然合理,但是也可能会被
擦除,出现错误的数据,解释不出来。

http://www.makaidong.com/QT%E5%BC%80%E5%8F%91/395736.shtml

单步调试 这种问题 要自己好好调试一下就好了