一个关于C语言的结构体数组输出的小问题
#include<stdio.h>#include<math.h>voidmain(){structcandidate{charname[30];}can[]={{"苍井...
#include <stdio.h>
#include <math.h>
void main()
{
struct candidate
{
char name[30];
}can[]={{"苍井"},{"小甲鱼"},{"松岛"},{"伟少"}};
int A,B,C,D;
A=B=C=D=0;
printf("欢迎进入良好公民评选投票系统:()\n\n");
printf("候选人有:%s%s%s%s",*(can+0),*(can+1),*(can+2),*(can+3));
}
这是我写的一小段代码,无逻辑错误,问题是不能编译,我自己猜测是再最后一段输出的时候出错了 ,可是我想不明白出错在哪里,本人新手,希望知道的回答下,感激不尽!!! 展开
#include <math.h>
void main()
{
struct candidate
{
char name[30];
}can[]={{"苍井"},{"小甲鱼"},{"松岛"},{"伟少"}};
int A,B,C,D;
A=B=C=D=0;
printf("欢迎进入良好公民评选投票系统:()\n\n");
printf("候选人有:%s%s%s%s",*(can+0),*(can+1),*(can+2),*(can+3));
}
这是我写的一小段代码,无逻辑错误,问题是不能编译,我自己猜测是再最后一段输出的时候出错了 ,可是我想不明白出错在哪里,本人新手,希望知道的回答下,感激不尽!!! 展开
4个回答
展开全部
大家回答问题,为什么要再从新写套代码贴给他看呢,重要的是方法和知识点!!!代码就那么几个字母没有任何的意义。
虽然我也不能确定你后面的输出方法到底有没有错,因为我的确没有这样写过。
下面给你提供两个找问题的方法,希望有借鉴的作用:
1.你可以把can+0 的地址和 can[0].name 的地址输出来看看是不是同一个地址,如果不是同一个地址,那肯定就输出不了,如果打印出来的是同一个地址,那说明地址的指向是正确的.
2.你再试着显示转换一下再打印,如果还打印不出,那么就应该查资料,查他们的区别,就像数组a 和 &a 和&a[0]的区别。
我看到你采纳满意答案了,can[0].name的调用方法肯定是正确的,但是前面的为什么是错的,你知道了吗?相比显然知道原因更重要,而不是知道要can[0].name这样写。
虽然我也不能确定你后面的输出方法到底有没有错,因为我的确没有这样写过。
下面给你提供两个找问题的方法,希望有借鉴的作用:
1.你可以把can+0 的地址和 can[0].name 的地址输出来看看是不是同一个地址,如果不是同一个地址,那肯定就输出不了,如果打印出来的是同一个地址,那说明地址的指向是正确的.
2.你再试着显示转换一下再打印,如果还打印不出,那么就应该查资料,查他们的区别,就像数组a 和 &a 和&a[0]的区别。
我看到你采纳满意答案了,can[0].name的调用方法肯定是正确的,但是前面的为什么是错的,你知道了吗?相比显然知道原因更重要,而不是知道要can[0].name这样写。
更多追问追答
追问
答案不正确,我已经在评论里说过我的答案了,昨晚确实一直在区别这几个问题,弄到很晚才睡觉,不过真心谢谢你的回答!
追答
你采纳的满意答案有问题,.的优先级比* 高。
这东西一打印马上就知道,两种方法:
第一种:printf("候选人有:%s%s%s%s\r\n",(*(can+0)).name,(*(can+1)).name,(*(can+2)).name,(*(can+3)).name);
第二种:printf("候选人有:%s%s%s%\r\n",can+0,can+1,can+2,can+3);
printf("候选人有:%s%s%s%s",*(can+0),*(can+1),*(can+2),*(can+3));你的这种写法的问题是,%s是字符串格式输出,它的参数需要的是一个指向字符串的首地址,而你写*(can+3)的明显是取了地址里的数据,而参数需要的是地址。
对于两个方法个人觉得第二种方法好。第一种方法太呆板了,没有c语言的特点。
展开全部
#include <stdio.h>
#include <math.h>
void main()
{
struct candidate
{
char name[30];
}can[]={{"苍井"},{"小甲鱼"},{"松岛"},{"伟少"}};
int A,B,C,D;
A=B=C=D=0;
printf("欢迎进入良好公民评选投票系统:()\n\n");
printf("候选人有:%s%s%s%s",*(can+0).name,*(can+1).name,*(can+2).name,*(can+3).name);
// 输出结构数组的各个name才对吧,直接输出数组元素不行的。
}
#include <math.h>
void main()
{
struct candidate
{
char name[30];
}can[]={{"苍井"},{"小甲鱼"},{"松岛"},{"伟少"}};
int A,B,C,D;
A=B=C=D=0;
printf("欢迎进入良好公民评选投票系统:()\n\n");
printf("候选人有:%s%s%s%s",*(can+0).name,*(can+1).name,*(can+2).name,*(can+3).name);
// 输出结构数组的各个name才对吧,直接输出数组元素不行的。
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <math.h>
int main()
{
struct candidate
{
char name[30];
}can[4]={{"苍井"},{"小甲鱼"},{"松岛"},{"伟少"}};
int A,B,C,D;
A=B=C=D=0;
printf("欢迎进入良好公民评选投票系统:()\n\n");
printf("候选人有:%s%s%s%s",*(can+0),*(can+1),*(can+2),*(can+3));
}
}can[]={{"苍井"},{"小甲鱼"},{"松岛"},{"伟少"}};
改成
}can[4] ....................
#include <math.h>
int main()
{
struct candidate
{
char name[30];
}can[4]={{"苍井"},{"小甲鱼"},{"松岛"},{"伟少"}};
int A,B,C,D;
A=B=C=D=0;
printf("欢迎进入良好公民评选投票系统:()\n\n");
printf("候选人有:%s%s%s%s",*(can+0),*(can+1),*(can+2),*(can+3));
}
}can[]={{"苍井"},{"小甲鱼"},{"松岛"},{"伟少"}};
改成
}can[4] ....................
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询