红联Linux门户
Linux帮助

c语言编程疑问

发布时间:2009-11-05 22:09:12来源:红联作者:sundh1981
#include"stdio.h"
struct student{
int sid;
char name[20];
char sex[2];
};
main()
{struct student s;
//s.sid=0;
printf("请输入学生信息:\n");
scanf("%d%s%s",s.sid,s.name,s.sex);
printf("学号:%d\n姓名:%s\n性别:%s",s.sid,s.name,s.sex);
}

编译运行后输入:101
sun
m
输出结果为:学号: -1079871224
姓名:sun
性别:m
难道我定义的整形变量有问题?还是空间分配什么问题。。。我在turbo C 2.0下正常呀?请问是怎么回事?如何改正?谢谢指导!
文章评论

共有 7 条评论

  1. jiangxhr 于 2009-11-08 03:14:09发表:

    呵呵,热心的人还是很多啊,同意2、3、5楼

  2. yuchao668 于 2009-11-08 02:28:08发表:

    [i=s] 本帖最后由 yuchao668 于 2009-11-8 02:29 编辑 [/i]

    scanf("%d%s%s",s.sid,s.name,s.sex);
    对于这一句的%d%s%s决定了你的输入方式,我看到你的输入方式是输入一项你就回车一次,但你的%d%s%s里并没有要求回车,你可以在每个格式符之间加一个空格%d %s %s,输入时只需在每一项之间加一个空格就行了,等三个数据项都输入完后再回车,而不是输入一项就回车;或者你使用三次scanf语句。

  3. prinse 于 2009-11-08 02:04:42发表:

    LZ 的程序真的在 TC 2 下能正常吗?我怎么不记得 TC 2 能这么用的了?

  4. ezheld 于 2009-11-06 15:17:47发表:

    scanf("%d%s%s",&(s.sid),s.name,s.sex);

  5. sundh1981 于 2009-11-06 09:46:38发表:

    thanks
    我刚开始编写的时候也加了&后来发现错误,就去掉了。。。结果运行正常却出了这个错误。。。呵呵

  6. ajiejiejie 于 2009-11-06 01:07:59发表:

    应该就是2楼说的问题了,scanf后面要用地址,你后面两项之所以正常是因为字符数组本身就是个指针,而int类型就不行了

  7. Silenthunter 于 2009-11-05 22:14:07发表:

    例:

    int a;
    printf("请输入一个整数:");
    scanf("%d",&a);

    楼主,是否明白错在哪里了?