鱼C论坛

 找回密码
 立即注册
查看: 2876|回复: 5

C视频53的这个程序哪边有错误,求解?

[复制链接]
发表于 2011-9-30 23:29:10 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ZPCG 于 2011-10-1 00:23 编辑
#include <stdio.h>
void main()
{
struct student
{
int num;
char *name;
char sex;
int age;
double score;
}boy1,boy2; //结构变量


boy1.num = 005;

printf("input the boy's name:");
scanf("%s", &boy1.name);

printf("input the boy's sex:");
scanf("%c", &boy1.sex);       //       到这步的时候直接跳过,是怎么回事????

printf("input the boy' age and score");
scanf("%d%lf", &boy1.age, &boy1.score);

boy2 = boy1;

printf("\nboy2's num is %d\nname is %s\nsex is %c\nage is %d\nscore is %g\n", boy2.num, boy2.name, boy2.sex, boy2.age, boy2.score);

}
这个程序要改正确很容易,我发上来主要是想知道这个程序出错的解释.让自己理解深一点!谢谢各位的回复!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-30 23:54:06 | 显示全部楼层
本帖最后由 Y.H 于 2011-9-30 23:57 编辑

建议把char *name  改为 一个字符数组 char name[256];

我还是建议你把那段代码的输入格式改为 scanf ("%s", &boy1.name);   scanf ("%s", &boy1.sex);

只原因我也不了解。可能因为输入格式不正确。

改了之后就能成功输入!

123.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-9-30 23:55:24 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-10-1 00:17:00 | 显示全部楼层

讲得很有道理,boy1.sex已经拿了缓冲区\n,但怎么解释接下去的运行中程序出错,提示关闭呢?但如果把结构体中的char *name改成数组形式,最终的结果就能出来,而且结果中的SEX也确实等于回车,到底应该怎么解释才最正确呢.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-10-1 00:41:06 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-10-1 00:43:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-9 12:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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