| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 976 人关注过本帖
标题:一个结构体的程序,出现错误,请帮忙排查
只看楼主 加入收藏
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
一个结构体的程序,出现错误,请帮忙排查
想了很久没发现错在哪里,调用字串在功能函数里可以,一切正常,但返回到main里则提示错误,请帮忙找错,谢谢
程序代码:
#include <stdio.h>
#include <stdlib.h>

typedef struct sdu {
    char name[24];
    char NO[24];
    int chengJi;
    struct sdu * next;
} SDU;
typedef SDU * PrtSDU;

void start(PrtSDU head);


int main(int argc, char **argv)
{
    PrtSDU head = NULL;
    start(head);
    printf("test head p = %p\n",&head);
    printf("%s\n",head->name);    //这里为错误点,我错在哪里呢?
    printf("%s\n",head->NO);
    printf("%d\n",head->chengJi);
    printf("all ok\n");
    return 0;
}

void start(PrtSDU head){
    head = (PrtSDU)malloc(sizeof(SDU));
    if (head != NULL){
        scanf("%s%s%d",head->name,head->NO,&head->chengJi);
        printf("test start ok , %s %s %d .\n",head->name,head->NO,head->chengJi);
        head->next = NULL;
    }else{
        printf("error\n");
    }
}
搜索更多相关主题的帖子: 结构体 color 
2017-02-19 16:43
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:20 
传入的是形式参数, void start(PrtSDU head);要使用二级指针, 也可以将这个函数设为返回一个指针的形式
程序代码:
#include <stdio.h>
#include <stdlib.h>

typedef struct sdu {
    char name[24];
    char NO[24];
    int chengJi;
    struct sdu * next;
} SDU;
typedef SDU * PrtSDU;

void start(PrtSDU *head);   //二级指针 


int main(int argc, char **argv)
{
    PrtSDU head = NULL;
    start(&head);         //取地址 
    
    printf("test head p = %p\n",&head);
    printf("%s\n",head->name);    
    printf("%s\n",head->NO);
    printf("%d\n",head->chengJi);
    printf("all ok\n");
    return 0;
}

void start(PrtSDU *head){
    *head = (PrtSDU)malloc(sizeof(SDU));
    if (*head != NULL){
        scanf("%s%s%d",(*head)->name,(*head)->NO,&(*head)->chengJi);
        printf("test start ok , %s %s %d .\n",(*head)->name,(*head)->NO,(*head)->chengJi);
        (*head)->next = NULL;
    }else{
        printf("error\n");
    }
}

早知做人那么辛苦!  当初不应该下凡
2017-02-19 18:48
kin3z
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:157
专家分:390
注 册:2011-4-24
收藏
得分:0 
回复 2楼 炎天
这个问题我在编译器里完全通过的确让我不知所措。
现在弄明白了,谢谢您的指点。
2017-02-19 19:05
快速回复:一个结构体的程序,出现错误,请帮忙排查
数据加载中...
 
   



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

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