回 帖 发 新 帖 刷新版面

主题:用字符指针有问题,高手,快近来帮我看看,

#include<stdio.h>
struct date
{
    int year;
    int month;
    int day;
}aaa;
char bbb(int b);
void main()
{
    
    printf("以数字的形式输入日期(年月日)\n");
    printf("输入年<1900-2005>:");
    scanf("%d",&aaa.year);
    if(aaa.year<=2005&&aaa.year>=1900)
    {
        printf("输入月:");
        scanf("%d",&aaa.month);
        if(aaa.month>=1&&aaa.month<=12)
        {
            printf("输入日:");
        scanf("%d",&aaa.day);
             if(aaa.month==2)
             {
                  if(aaa.day<=28&&aaa.day>=1)
                 printf("输入的日期为:%d年%s月%d日",aaa.year,bbb(aaa.month),aaa.day);
                 else
                     printf("输入有误");
             }
             if(aaa.month==1||aaa.month==3||aaa.month==5||aaa.month==7||aaa.month==8||aaa.month==10||aaa.month==12)
             {
                 if(aaa.day>=1&&aaa.day<=31)
                     printf("输入的日期为:%d年%s月%d日",aaa.year,bbb(aaa.month),aaa.day);
                 else
                     printf("输入有误");
             }
             if(aaa.month==4||aaa.month==6||aaa.month==9||aaa.month==11)
             {
                 if(aaa.day<=30&&aaa.day>=1)
                     printf("输入的日期为:%d年%s月%d日",aaa.year,bbb(aaa.month),aaa.day);
                 else
                     printf("输入有误");
             }        
        }
        else
            printf("输入有误。");    
    }
    else
        printf("输入有误。");
}

char bbb(int b)
{
    char* m;
    int* ptr;
    ptr=&b;
    //char x[12] ={'a','b','c','d','e','f','g','h','i','j','k','l'};
    char* x[12] ={"january","february","march","april","may","june","jule","august","september","october","november","december"};
    *m=*x[*ptr-1];
    return *m;
}[em10][em10][em10][em10]
子函数哪里错了,指针还不会啊,高手,快近来[em4]

回复列表 (共5个回复)

沙发

很简单的东西,直接定义一个枚举就行了

板凳

汗,看你的程序可真费劲,你写的程序定义变量怎么不用有意义的字符串

3 楼

菜鸟,写的,麻烦高手指点

4 楼

函数改为
char *bbb(int b);

char* bbb(int b)
{
    char* m;
    int* ptr;
    ptr=&b;
    //char x[12] ={'a','b','c','d','e','f','g','h','i','j','k','l'};
    char* x[12] ={"january","february","march","april","may","june","jule","august","september","october","november","december"};
    m=x[*ptr-1];
    return m;
}
返回一个指针,这样就OK了。

5 楼

还有忘记说了!
    char* m;
    int* ptr;
    ptr=&b;
    //char x[12] ={'a','b','c','d','e','f','g','h','i','j','k','l'};
    char* x[12] ={"january","february","march","april","may","june","jule","august","september","october","november","december"};
    *m=*x[*ptr-1];
    return *m;

你没有给m申请空间,你就进行赋值,*m=*x[*ptr-1];会除大问题的。
就直接用m指向x[ptr-1]就好了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册