鱼C论坛

 找回密码
 立即注册
查看: 3915|回复: 2

求大哥帮忙看一段代码哪里出问题了..

[复制链接]
发表于 2012-12-9 13:30:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 旺弟 于 2012-12-9 13:32 编辑

# include <stdio.h># include <process.h>
struct stu {
        char name[10];        
        int num;        
        int age;        
        char addr[15];}boya[2],boyb[2],*pp,*qq;
int main()
       {
        FILE *fp;      
        int i;        
        pp=boya;        
       qq=boyb;      
         if((fp=fopen("d:\\2.txt","wb+"))==NULL)        
        {   
                printf("Cannot open file strike any key exit!");   
                getchar();   
                exit(1);        
        }
  printf("\ninput data\n");
  for(i=0;i<2;i++,pp++)  
  scanf("%s,%d,%d,%s",pp->name,&pp->num,&pp->age,pp->addr);  
  printf("%s\n",pp->addr);  
  pp=boya;  
  fwrite(pp,sizeof(struct stu),2,fp);  //按结构数据设计格式,写入两块数据  
  rewind(fp); //重置指针  
   fread(qq,sizeof(struct stu),2,fp);  //按结构数据设计格式,读入两块数据  
   printf("\n\nname,number,age,addr\n");  
   for(i=0;i<2;i++,qq++)  
   printf("%s,%d,%d,%s\n",qq->name,qq->num,qq->age,qq->addr);  //输入qq所指向的结构数据  
   fclose(fp);  
   return 0;
}

输出结果
---------------------------------------------
input data
sdfsdf,151,1654,dfdsf
opierw,854,9654,sdfds

name,number,age,addr
sdfsdf,151,1654,dfdsf,741618998,1935959652,f
opierw,854,9654,sdfds,741618998,1684431987,s
Press any key to continue


为什么后面会出现这些数据..是我那一句代码有问题吗
求教,先跪谢为敬了!



小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-9 21:31:36 | 显示全部楼层
这个程序是%s的问题,因为使用%s,它是读到换行或者空格,所以调试你会发现那么值就等于了输入的整个值,后面所有的值都是类型的随机值或默认值,so,去掉 scanf("%s,%d,%d,%s",pp->name,&pp->num,&pp->age,pp->addr);  里双引号中的逗号,换成空格就能解决这个问题。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-12-9 23:52:23 | 显示全部楼层

顶,就是这个原因,你说太对了。nane读到的是整个整个输入的字符。比如输入楼主输入1,2,3,4,这时的name数组的值为1,2,3,4。你不觉得奇怪吗?为什么文件里都有逗号,因为这个逗号被name保存了,而文件中的数值都是name中的,而结构体里其他成员值为0。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-16 18:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表