鱼C论坛

 找回密码
 立即注册
查看: 3761|回复: 12

求解决结构体的问题

[复制链接]
发表于 2013-4-11 15:03:56 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 流沙 于 2013-4-11 15:15 编辑

#include<stdio.h>
#include<string.h>
struct
{
char name[20];
int count;
}leader[4]={{"one",0},{"two",0},{"th",0},{"four",0}};
void main()
{
int i,j;
char t[20];

printf("欢迎进入良好公民评选系统:\n");
printf("候选人有:one、two、th、four \n");
for(i=0;i<10;i++)
{
  printf("第 %d 位投票,请写下支持的候选人名字:",i+1);
  scanf("%s",t);如果把这改成scanf("%s",&t[i][i][i]);为什么结果就不对呢?
  for(j=0;j<4;j++)
  {
   if(strcmp(leader[j].name,t)==0)
   {
    leader[j].count=leader[j].count+1;
   }
   
  }
}
for(i=0;i<4;i++)
{
  printf("%5s:%d\n",leader[i].name,leader.count);
}
}
如果
[/i][/i][/i]
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-11 15:11:10 | 显示全部楼层
字符数组名就是这个这个字符串的首地址,所以在scanf时,不需要加&符号。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-11 15:14:07 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-11 15:16:42 | 显示全部楼层
流沙 发表于 2013-4-11 15:14
我刚打错了是改成scanf("%s",&t);

中括号怎么打不上呢
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-11 15:17:48 | 显示全部楼层
我刚打错了是改成scanf("%s",&t);
你程序中不就是scanf("%s",&t);的吗??
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-11 15:21:55 | 显示全部楼层
小亮1201 发表于 2013-4-11 15:17
你程序中不就是scanf("%s",&t);的吗??

&t后面有中括号,中括号里面有i,但发表上去就不见了
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-11 15:27:50 | 显示全部楼层
楼主那样也可以,那样的话每次输入一个字符。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-11 15:34:18 | 显示全部楼层
淡定,淡定,淡定……
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-11 21:01:47 | 显示全部楼层
我只是路过打酱油的。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-12 10:15:09 | 显示全部楼层
这么说吧:t是指向数组第一个元素的指针,&t是指向数组所有元素的指针,t+1是指向了数组的第二个元素,而如果&t+1的话就指向到整个数组的20个元素的后面的20个元素了,t是char *型,&t是char (*t)[20]型,这是规定,&在数组这里和平常不一样不是取t的地址,而是一个指向整个数组的指针。所以你这样输入当然是不对的。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-12 13:14:12 | 显示全部楼层
在字符串的输入中,不能加地址符
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-12 13:19:03 | 显示全部楼层
.是用作指针的,->替代即可  而且你的程序有点逻辑上的缺陷
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-12 13:21:47 | 显示全部楼层
#include<stdio.h>
#include<string.h>
struct
{
char name[20];
int count;
}leader[4]={{"one",0},{"two",0},{"th",0},{"four",0}};
void main()
{
int i,j;
char t[20];

printf("欢迎进入良好公民评选系统:\n");
printf("候选人有:one、two、th、four \n");
for(i=0;i<10;i++)
{
  printf("第 %d 位投票,请写下支持的候选人名字:",i+1);
  scanf("%s",t);//如果把这改成scanf("%s",&t);为什么结果就不对呢?
  for(j=0;j<4;j++)
  {
   if(strcmp(leader[j].name,t)==0)
   {
    leader[j].count=leader[j].count+1;
   }
   
  }
}
for(i=0;i<4;i++)
{
  printf("%5s:%d\n",leader[i].name,leader[i].count);
}
}

我自己也有点模糊了  我把改的给你看吧
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-4 06:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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