| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1197 人关注过本帖
标题:这个段错误是什么原因,看了好久没发现
只看楼主 加入收藏
key2923
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-10-6
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:4 
这个段错误是什么原因,看了好久没发现
#include<stdio.h>
#include<string.h>
#include<time.h>

typedef struct
{
   int y;
   int m;
   int d;
   int h;
   int min;
}date;

date *cur_time()
{
    time_t t;
    date *p;
    struct tm *pt ;
    char *pc ;
    char *pm[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
    int n=0,m=0;
    char month[5],day[4],hour[4],min[4],year[6];
    char str[50];
    time(&t);
    pc=ctime(&t);
    printf("ctime:%s", pc);
    for(;*pc != '\0';pc++,n++)
    {
         str[n] = *pc;
    }
    str[n] = '\0';
    pc = str;
    if(*(pc+3) = ' ' && *(pc+7) == ' ')
    for(n=4;n<7;n++)
    {
        month[n-4] = *(pc+n);
    }
    month[3] = '\0';
   
    pc = pc+7;
    for(n=1;n<3;n++)
    {
        day[n-1] = *(pc + n);
    }
    day[2] = '\0';
    if(day[0] != ' ')
    (*p).d = (day[0]-'0')*10+(day[1]-'0');
    else
    (*p).d = (day[1]-'0');                           //调试显示是此行出现段错误
    pc = pc+3;
    for(n=1;n<9;n++)
    {
       if(n>=1 && n<3)
        hour[n-1] = *(pc + n);
      
       if(n>=4 && n<6)
         min[n-4] = *(pc + n);  
    }
    hour[2]='\0';
    min[2]='\0';
    (*p).h = (hour[0]-'0')*10+(hour[1]-'0');
    (*p).min = (min[0]-'0')*10+(min[1]-'0');
    pc=pc+10;
    for(n=0;n<=3;n++)
    {
        year[n] = *(pc+n);
    }
    year[4] = '\0';
    (*p).y = (year[0]-'0')*1000+(year[1]-'0')*100+(year[2]-'0')*10+(year[3]-'0');
    for(n=0;n<12;n++)
    {
        if(strcmp(month,pm[n]) == 0)
        {
            (*p).m = n+1;
            break;
        }
    }
    return p;
}


int main()
{
    date *x;
    x = cur_time();
    printf("%d %d %d %d %d\n",(*x).y,(*x).m,(*x).d,(*x).h,(*x).min);

    return 0;
}
  

各位大神帮帮忙,是什么原因造成的段错误呢?要怎么改呢?
搜索更多相关主题的帖子: include 
2016-10-06 20:44
word123
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:13
帖 子:333
专家分:1622
注 册:2014-4-5
收藏
得分:10 
#include<malloc.h>  //加一个头文件

date *p;
p = (date *)malloc(sizeof(date));//在定义p之后给p分配空间
2016-10-06 22:52
key2923
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-10-6
收藏
得分:0 
回复 2楼 word123
真是太谢谢啦,问题解决了
2016-10-07 13:01
feiyue323
Rank: 2
等 级:论坛游民
威 望:1
帖 子:35
专家分:18
注 册:2016-9-16
收藏
得分:10 
我用 visual c++ 6.0 编译没有错误显示  你用的是什么会发下bug
2016-10-09 15:57
key2923
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2016-10-6
收藏
得分:0 
回复 4楼 feiyue323
我用的Linux系统
2016-10-15 08:18
快速回复:这个段错误是什么原因,看了好久没发现
数据加载中...
 
   



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

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