| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 422 人关注过本帖
标题:感兴趣的朋友们来看看咯,不知道代码哪里出了一点点问题,运行的时候得不到 ...
只看楼主 加入收藏
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
感兴趣的朋友们来看看咯,不知道代码哪里出了一点点问题,运行的时候得不到预期的结果
#include<stdio.h>
int main()
{
    struct student
    {
       char number[3];
        char name[3];
        char telephone[20];
        char adress[10];
    };
    struct student stu[3];
    int i;
    for(i=0;i<3;i++)
    {
            printf("请输入第%d学生的信息:\n",i+1);
            printf("the number:");
            scanf("%s",stu[i].number);
            printf("the name:");
            scanf("%s",stu[i].name);
            printf("the telephone:");
            scanf("%s",stu[i].telephone);
            printf("the adress:");
            scanf("%s",stu[i].adress);
    }
    printf("学生的信息如下:\n");
    for(i=0;i<3;i++)
    {
        printf("student number:%s,name:%s,tele:%s,adress:%s\n",stu[i].number,stu[i].name,stu[i].telephone,stu[i].adress);
    }
    return 0;
}
        不知道这些代码出了什么问题,帮忙找找看,顺便修改一下!题目本来的要求是输出三个学生的信息,例如:student1本来应该输出
student number:001,name:vergil,tele:13647825023,adress:zhonogguo,但根据以上的代码输出的结果却是:
student number:001vergil,name:vergil13647825023,tele:13647825023,adress:zhonogguo,各位高手帮忙看看一下是怎么回事的!
搜索更多相关主题的帖子: 朋友 telephone include number 
2012-12-11 12:48
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
这里错了scanf("%s",stu[i].number);
这是单个元素的输入,需要加个&
 scanf("%s",&stu[i].number);
            printf("the name:");
            scanf("%s",&stu[i].name);
            printf("the telephone:");
            scanf("%s",&stu[i].telephone);
            printf("the adress:");
            scanf("%s",&stu[i].adress);
2012-12-11 14:07
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
把每个数组增加一个空间

哦,输出正确的可以不加

因为‘\0’

[ 本帖最后由 azzbcc 于 2012-12-11 14:18 编辑 ]


[fly]存在即是合理[/fly]
2012-12-11 14:16
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
struct student
    {
        char number[8];
        char name[16];
        char telephone[16];
        char adress[16];
    };
在结构体中,数组的个数最好取2的倍数

楼上说得对,每个数组需要最后存个\0
2012-12-11 14:19
crystall
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:184
专家分:809
注 册:2012-12-1
收藏
得分:10 
程序代码:
#include "stdafx.h"

#include<stdio.h>
int main()
{
    struct student
    {
       char number[4];
        char name[4];
        char telephone[20];
        char adress[10];
    };
    struct student stu[3];
    int i;
    for(i=0;i<3;i++)
    {
            printf("请输入第%d学生的信息:\n",i+1);

            printf("the number(3):");
            scanf("%3s",stu[i].number);

            printf("the name(3):");
            scanf("%3s",stu[i].name);


            printf("the telephone(19):");
            scanf("%19s",stu[i].telephone);

            printf("the adress(9):");
            scanf("%9s",stu[i].adress);
    }

    printf("学生的信息如下:\n");
    for(i=0;i<3;i++)
    {
        printf("student number:%s, name:%s, tele:%s, adress:%s\n",
                 stu[i].number,
                 stu[i].name,
                 stu[i].telephone,
                 stu[i].adress);
    }
    return 0;
}
2012-12-11 14:28
落雨and无声
Rank: 2
等 级:论坛游民
帖 子:48
专家分:30
注 册:2012-10-5
收藏
得分:0 
回复 3楼 azzbcc
他的name只是一个3个字符的数组,那他是怎样把vergil记录下来的。。。没有越界吗?求指教
2012-12-11 14:52
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
空间连接到一起了,所以name访问了不知地域的非法空间,这里我也不会,额。

调试跟踪看看。


[fly]存在即是合理[/fly]
2012-12-11 15:00
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
回复 6楼 落雨and无声
好奇怪他的编译器。。。

我用VC,4个数组是连在一起的,越界会访问下一组,再输入时覆盖掉,不太清楚他的编译器访问哪里了,好奇葩的编译器,额。


[fly]存在即是合理[/fly]
2012-12-11 15:16
麦香
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:65
专家分:163
注 册:2011-10-18
收藏
得分:0 
程序代码:
struct student
    {
       char number[3];
        char name[3];
        char telephone[20];
        char adress[10];
    };

这部分空间最好分大点
然后输入部分可以这样,就保证字符数组有'\0'.
程序代码:
for(i=0;i<3;i++)
    {
            printf("请输入第%d学生的信息:\n",i+1);
            printf("the number:");
            gets(stu[i].number);
            printf("the name:");
            gets(stu[i].name);
            printf("the telephone:");
            gets(stu[i].telephone);
            printf("the adress:");
            gets(stu[i].adress);
    }


你再试试

你们要进窄门,因为引向灭亡的门是宽的,路是大的,进去的人也多。
2012-12-11 15:57
快速回复:感兴趣的朋友们来看看咯,不知道代码哪里出了一点点问题,运行的时候得 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.129939 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved