| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2145 人关注过本帖
标题:结构体应用,打印的时候出现乱码,请高人看看问题处在哪里?
只看楼主 加入收藏
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
结构体应用,打印的时候出现乱码,请高人看看问题处在哪里?
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

struct PersonList
{
    char name[20];
    char tel[20];
    char addr[20];
};

//新建信息
struct PersonList * input()
{
    struct PersonList * person ;
    struct PersonList p[20]={{"zhangsan","123","sa"},{"lisi","341","qw"}};
    static int i=0;

    person = p;

    return person;
        
}

//打印信息
void display(struct PersonList *p,int  n)
{
    int i;

    printf("%-20s%-20s%-20s\n","姓名","电话","住址");
    printf("\n");
    for(i=0;i<n;i++)
        printf("%-20s%-20s%-20s\n",p[i].name,p[i].tel,p[i].addr);  
}

int main(void)
{
    struct PersonList *p;

    p=input();  //输入信息

    display(p,2);//打印信息
   
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: 应用 信息 int struct 打印 
2020-04-26 10:43
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
收藏
得分:0 
如果把“新建信息”那段子程序里的结构体赋值直接放在主程序里,打印就没问题,可是我就是找不出错误的源头
2020-04-26 10:46
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
收藏
得分:20 
输出:
姓名                电话                住址

zhangsan            123                 sa
lisi                341                 qw
乱码了吗?你那里乱码输出了什么呢?

借用一下侯捷的话:勿在浮沙筑高台。
2020-04-26 10:50
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
收藏
得分:0 
回复 3楼 吕孟伟
图片附件: 游客没有浏览图片的权限,请 登录注册

难道是我编译器有问题??
2020-04-26 10:58
qing_yx
Rank: 2
等 级:论坛游民
威 望:1
帖 子:25
专家分:70
注 册:2020-4-26
收藏
得分:0 
谢谢3楼 吕孟伟 版主,我用的VS2008,估计是版本太老了,我重新下一个再试试,请问您用的什么编译器啊?
2020-04-26 11:01
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
收藏
得分:0 
回复 5楼 qing_yx
你这确实太老了哈,用VS2017、2019都行。
我用的是GCC。

借用一下侯捷的话:勿在浮沙筑高台。
2020-04-26 11:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9024
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用qing_yx在2020-4-26 10:58:06的发言:
难道是我编译器有问题??


你返回了一个局部对象的地址,这个局部对象离开函数后就不存在了
2020-04-26 11:42
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
这个问题和结构体没有关系。
你的数组p作为非静态局部变量在定义它的函数结束以后会被自动销毁,空间被回收再利用,因此其地址失去意义。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-04-26 11:55
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1688
专家分:4262
注 册:2007-12-27
收藏
得分:0 
这样写就相当于买东西的时候一摞钞票已经付给卖家,卖家随手放在桌上,你居然临走又顺手拿走一部分。

3楼的卖家忙别的去了没看到

[此贴子已经被作者于2020-4-26 12:00编辑过]


对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-04-26 11:59
快速回复:结构体应用,打印的时候出现乱码,请高人看看问题处在哪里?
数据加载中...
 
   



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

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