易码技术论坛

 找回密码
 加入易码
搜索
查看: 188169|回复: 8

高手帮我看代码

[复制链接]
发表于 2005-7-16 16:31:00 | 显示全部楼层
你写入的时候每次都写得Player

应该是Player+i*sizeof(struct sav)

初始化也没有加下标

 楼主| 发表于 2005-7-16 16:42:00 | 显示全部楼层
没看懂,能说具体点吗

或者直接把改后的代码贴出来,让我慢慢体会
发表于 2005-7-16 17:40:00 | 显示全部楼层

struct sav
{
char name[10];                            //名字
int score;                                  //得分
};
struct sav player[5];
void main()
{
char i;
char fp;
for(i=0;i<5;i++)
{
  player.name="degetkey";
  player.score=100;
}
fp=fopen("/LavaData/a.txt","w");
fwrite(player,1,sizeof(struct sav)*5,fp);

 楼主| 发表于 2005-7-16 17:44:00 | 显示全部楼层
谢谢  yzk0370
 楼主| 发表于 2005-7-16 18:03:00 | 显示全部楼层
还是不行

说fwrite(player,1,sizeof(struct sav)*5,fp);有语法错误,为什么呢???

还有player后有方括号吗?

还有运行完的a.txt文件还是

          d           d           d           d           d

为什么?degetkey还没写进去


我用的是lavaxide3.1
发表于 2005-7-18 13:43:00 | 显示全部楼层
player.name="degetkey";//可以这样写吗?
发表于 2005-7-18 13:49:00 | 显示全部楼层
你确定用的是lava而不是C++?想要复制字符串需要用strcpy()函数才行。数组名其实是数组首元素地址,而且它是常量地址,不能被赋值。前面你写的
player.name[10]="degetkey";
应该是语法错误,但在这里解释成了把第一个元素'd'复制到name的第十个元素了,所以输出都是d
发表于 2005-7-18 21:50:00 | 显示全部楼层
player.name[10]="degetkey";            
应该是
strcpy(player[10].name,"dfjadslkjfsalk");
 楼主| 发表于 2005-7-16 16:29:30 | 显示全部楼层 |阅读模式
我想做一个排行榜

这是代码

struct sav
{
char name[10];                            //名字
int score;                                  //得分
};

struct sav player[5];

void main()
{
char i;
char fp;
for(i=0;i<5;i++)
  {
  player.name[10]="degetkey";            //加上下标也不行,(发帖子时,下标被过滤了)
  player.score=100;
  }
fp=fopen("/LavaData/a.txt","w");
for(i=0;i<5;i++)
  {
  fwrite(player,1,sizeof(struct sav),fp);     //这也加上下标
  }
}

运行后,以下是我创建的a.txt文件
          d           d           d           d           d


也就是说只写入了得分,没写入名字

为什么

[此贴子已经被作者于2005-7-16 16:46:27编辑过]

您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-29 18:10 , Processed in 0.014211 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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