| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:linux下bug
只看楼主 加入收藏
liuleix157
Rank: 1
等 级:新手上路
帖 子:34
专家分:4
注 册:2013-7-16
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:9 
linux下bug
《------------------------------------User.c--------------------------------------》
程序代码:
#include<stdio.h>

#include<stdlib.h>

#define USER_NAME 20

typedef struct User{

        struct User *link;

        char name[USER_NAME];

        int age;

} user;

《------------------------------------test.c--------------------------------------》
程序代码:
#include<stdio.h>

#include"User.c"

user *start;

user *this;

user *previous;

user *stop;

int add(){

        int i,j,c;

        printf("printf user number:");

        scanf("%d",&j);

        for(i=1;i<=j;i++){

                if(i==1){

                        this = start = previous = (user *)malloc(sizeof(this));

                }else{

                        this = (user *)malloc(sizeof(this));

                        previous->link = this;

                        previous = this;
                };

                printf("printf user %d name:",i);

                getchar();

                gets(this->name);

                printf("printf %s age:",this->name);

                scanf("%d",&(this->age));

                printf("printf age is %d\n",this->age);

        };

        stop = this;

}

int printfs(){

        this = start;

        while(this!=NULL){

                printf("%s   :::::::   %d\n",this->name,this->age);

                this = this->link;

        }
}

int frees(){

        while(start!=NULL){

                free(start);

                start = start->link;

        }

}

int main(){
    add();
    printfs();
    printfs();
    frees();
}





《------------------------------------运行结果--------------------------------------》
xujia@xujia-Rev-1-0:~/C/project_one$ ./one

printf user number:4

printf user 1 name:name1

printf name1 age:1

printf age is 1

printf user 2 name:name2

printf name2 age:2

printf age is 2

printf user 3 name:name3

printf name3 age:3

printf age is 3

printf user 4 name:name4

printf name4 age:4

printf age is 4

name1   :::::::   50

name2   :::::::   51

name3   :::::::   52

name4   :::::::   4

name1   :::::::   50

name2   :::::::   51

name3   :::::::   52

name4   :::::::   4

xujia@xujia-Rev-1-0:~/C/project_one$ ./one

printf user number:4

printf user 1 name:n1

printf n1 age:1

printf age is 1

printf user 2 name:n2

printf n2 age:2

printf age is 2

printf user 3 name:n3

printf n3 age:3

printf age is 3

printf user 4 name:n4

printf n4 age:4

printf age is 4

n1   :::::::   1

n2   :::::::   2

n3   :::::::   3

n4   :::::::   4

n1   :::::::   1

n2   :::::::   2

n3   :::::::   3

n4   :::::::   4
搜索更多相关主题的帖子: linux 
2013-07-16 17:21
liuleix157
Rank: 1
等 级:新手上路
帖 子:34
专家分:4
注 册:2013-7-16
收藏
得分:0 
大哥帮忙看看  小弟已经纠结一天了
2013-07-16 17:22
liuleix157
Rank: 1
等 级:新手上路
帖 子:34
专家分:4
注 册:2013-7-16
收藏
得分:0 
怎么就没人帮我看了  在程序中我主要存了一个名字(char[20]) 与 年龄(int)的链表  为什么同样的程序输入就不同啊!!!
2013-07-16 20:46
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:10 
表示看不来到底错哪了,麻烦详细说一下
2013-07-16 20:50
liuleix157
Rank: 1
等 级:新手上路
帖 子:34
专家分:4
注 册:2013-7-16
收藏
得分:0 
我貌似知道哪里错了,用sizeof(this)测试我开辟的空间只有四个,这估计是关键。
2013-07-16 21:10
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:0 
回复 5楼 liuleix157
sizeof(this)得到的是指针占的内存单元数
2013-07-16 21:12
liuleix157
Rank: 1
等 级:新手上路
帖 子:34
专家分:4
注 册:2013-7-16
收藏
得分:0 
回复 4楼 心灯甚亮
就是输入名字长了,age值会改变,不知道为什么  如提示你输name,你输入xadgg,age
输入1,等到用链表输出的时候值就发生了变化
2013-07-16 21:13
liuleix157
Rank: 1
等 级:新手上路
帖 子:34
专家分:4
注 册:2013-7-16
收藏
得分:0 
回复 6楼 心灯甚亮
我知道了   3Q    自学就是有点伤神
2013-07-16 21:17
qq525273446
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:54
专家分:161
注 册:2009-11-18
收藏
得分:10 
有问题吗?两次输入的不同  输出的当然不同了

找工作中……
2013-07-16 21:41
liuleix157
Rank: 1
等 级:新手上路
帖 子:34
专家分:4
注 册:2013-7-16
收藏
得分:0 
回复 9楼 qq525273446
  比如我存4组信息
名字            age
name1            1
name2            2
name3            3
name4            4
——————————用下方法输出——————————
程序代码:
int printfs(){
        this = start;
        while(this!=NULL){
                printf("%s   :::::::   %d\n",this->name,this->age);
                this = this->link;
        }
}

————————————结果——————————————
name1   :::::::   50
name2   :::::::   51
name3   :::::::   52
name4   :::::::   4
2013-07-17 09:18
快速回复:linux下bug
数据加载中...
 
   



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

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