免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2657 | 回复: 15
打印 上一主题 下一主题

为什么得不到预想的输出? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-29 16:04 |只看该作者 |倒序浏览
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
FILE *fp;
int i=0;

struct usersprofile
{
  char countryname[30];
  char language[5];
  char IElang[6];
  char IME[5];
  char KeyboardMap[9];
}users[86]={"Yemen","0401", "ar-YE","2401","00000401"};

for(i=0;i<86;i++)
{
       strcpy(users.countryname,"Yemen");
     strcpy(users.language,"0401");
      strcpy(users.IElang,"ar-YE");
     strcpy(users.IME,"2401");
      strcpy(users.KeyboardMap,"00000401");
}


fp=fopen("c:\\usersProfile-m","rb");
for(i=0;i<86;i++)
{
     fgets(&users,sizeof(struct usersprofile),fp);
     fseek(fp,0,1);
    printf("%s\n",&users);
          
  
}
fclose(fp);
for(i=0;i<86;i++)
{
printf("%-10s  %-5s  %-5s  %-5s  %-8s\n",users.countryname,users.language,users.IElang,users.IME,users.KeyboardMap);
}

}

哪位大虾帮忙看看,为什么结构体输出的结果不对?该怎样修改阿?
预想的输出是这样的:
我的文件usersprofile_m的每行有五项,想把这五项分别保存到struct对应的项中

[ 本帖最后由 huasd1109 于 2007-7-1 11:56 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-06-29 16:10 |只看该作者

回复 1楼 huasd1109 的帖子

这个是我的usersprofile_m文件的一部分
Yemen  0401  ar-YE  2401  00000401
Iraq  0401  ar-IQ  0801  00000401
Libya  0401  ar-LY  1001  00020401
Qatar  0401  ar-QA  4001  00000401
Syria  0401  ar-SY  2801  00000401
Egypt  0401  ar-EG  0C01  00000401
Bahrein  0401  ar-BH  3C01  00000401
Morocco  0401  ar-MA  1801  00020401
SaudiArabia  0401  ar-SA  0401  00000000
Kuwait  0401  ar-KW  3401  00000401
Tunisia  0401  ar-TN  1C01  00020401
Jordan  0401  ar-JO  2C01  00000401
Algeria  0401  ar-DZ  1401  00020401
Oman  0401  ar-OM  2001  00000401

[ 本帖最后由 huasd1109 于 2007-6-29 16:12 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-06-29 16:53 |只看该作者

回复 2楼 huasd1109 的帖子

帮忙啊!

论坛徽章:
0
4 [报告]
发表于 2007-06-29 17:02 |只看该作者
你确保肯定有86行么?

for(i=0;i<86;i++)
{
     char buf[1024];

     buf[0] = 0x00;
     fgets(buf, sizeof(buf), fp);
     if (buf[0])
       buf[strlen(buf)-1] = 0x00;
     
     sscanf(buf, "%s%s%s%s%s", user.countryname, user.language, user.IElang, user.IME, user.KeyboardMap);
}

[ 本帖最后由 ivhb 于 2007-6-29 17:06 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-06-29 17:11 |只看该作者

回复 4楼 ivhb 的帖子

确定阿

论坛徽章:
0
6 [报告]
发表于 2007-06-29 17:12 |只看该作者
试试不就知道了? 既然你那么写都敢测试

论坛徽章:
0
7 [报告]
发表于 2007-06-29 17:14 |只看该作者
试过了。
我是想知道问题出在哪里啊?

论坛徽章:
0
8 [报告]
发表于 2007-06-29 17:20 |只看该作者
sscanf(buf, "%s%s%s%s%s", user.countryname, user.language, user.IElang, user.IME, user.KeyboardMap);

每个user后面加[i],变成user[i]

论坛徽章:
0
9 [报告]
发表于 2007-06-29 18:53 |只看该作者
我的usersprofile_m文件的每一行有五项,我想把这五项分别保存在struct结构里。为什么实现不了啊?

论坛徽章:
0
10 [报告]
发表于 2007-06-29 19:25 |只看该作者
用了sscanf还是不行啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP