To_d_a_y 2021-07-01 07:56 采纳率: 100%
浏览 37
已采纳

C语言 可运行出窗口,但提取不出来信息,求看看那里出问题了

include <stdio.h>

include <conio.h>

include <string.h>

include <stdlib.h>

#include <malloc.h> /将数字转换成整数/ int ChangeStrToInt (char str[]){ int result = 0;
/* 下面代码中把数组名当作指针变量来使用 */
for(; * str!= '\0'; str++)
{
/*将字符表示的数字转换成对应的整数数字并拼接成对应的整数 */ result = result * 10 + ( str - 48); }
return result; } /
从字符串中取出对应的子串 / / 如:字符串"ABCD",取出第二个字符开始到第4个字符结束,得到字符串"BCD" / char * GetSubString(char * str, int begin, int end)
{
char * result;
int i;
/
为局部变量申请内存 */
result = (char )malloc(100); / 用空字符填充字符串 /
for(i = 0; i<100;i++) result[i] = 0;
/
取子串 */
for(i = begin - 1;i<= end - 1;i++) result[i - begin + 1] = str[i]; return result;
}
void GetIDCodeInfo(char * idCode,int currentYear,int * year, int * month, int * day, int * age, int * gender)
{ /*GetSubString(idCode,7,10)是函数调用语句 */
/*把一个函数调用的结果作为另外一个函数调用语句的实际参数 */
/*称为函数的嵌套使用 */

  • year = ChangeStrToInt(GetSubString(idCode,7,10));
  • month = ChangeStrToInt(GetSubString(idCode,11,12));
  • day = ChangeStrToInt(GetSubString(idCode,13,14));
  • age = currentYear -* year; if(ChangeStrToInt(GetSubString(idCode,15,17)) % 2 == 0)
    {
  • gender = 0;
    }
    else
    {
  • gender = 1;
    }
    }
    main()
    {
    char idCode[30] =""; int year,month,day,age,currentYear = 2021,gender;
    year = month = day = age = gender = 0;
    printf("输入18位的身份证号码[如:429004197507022369]:") ; gets(idCode); GetIDCodeInfo(idCode,currentYear,&year,&month,&day,&age,&gender); printf("\n输入身份证号码为:%s\n 当前年份为:%d\n\t 出生日期为:[%4d/2d:%2d]\n\t 年龄:%d\n\t 性别:%s", idCode,currentYear,year,month,day,age,gender == 0? "女":"男"); getch(); }
  • 写回答

3条回答 默认 最新

  • 浪客 2021-07-01 09:17
    关注

    6301看好西宁滴呗。

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    /*将数字转换成整数*/
    int ChangeStrToInt(char *str)
    {
        int result = 0;
    
        /* 下面代码中把数组名当作指针变量来使用 */
        //for (; *str != '\0'; str++)
        while(*str)
        {
            /*将字符表示的数字转换成对应的整数数字并拼接成对应的整数 */
            result +=  *str - '0';
            result *= 10;
            *str++;
        }
    
        return result/10;
    } // 从字符串中取出对应的子串
    // 如:字符串"ABCD",取出第二个字符开始到第4个字符结束,得到字符串"BCD"
    char *GetSubString(char *str, int begin, int end)
    {
        char *result;
        int i,j;
        /* 为局部变量申请内存 */
        //result = (char)malloc(100); /* 用空字符填充字符串 */
        result = (char *)calloc(100, sizeof(char)); //分配内存并用0填充
        // for (i = 0; i < 100; i++)
        // {
        //     result[i] = 0;
        // }
    
        /* 取子串 */
        //还得检测是否到字符串结尾了
        for (i = begin - 1,j=0; i <= end - 1 && str[i] != '\0'; i++,j++) //for (i = begin - 1; i <= end - 1; i++)
        {
            //result[i - begin + 1] = str[i];
            result[j] = str[i];
        }
        result[j] = '\0';
        return result;
    }
    void GetIDCodeInfo(char *idCode, int currentYear, int *year, int *month, int *day, int *age, int *gender)
    {
        /*GetSubString(idCode,7,10)是函数调用语句 */
        /*把一个函数调用的结果作为另外一个函数调用语句的实际参数 */
        /*称为函数的嵌套使用 */
    
        //日期,年龄,性别都是指针,需要*
        *year = ChangeStrToInt(GetSubString(idCode, 7, 10));
        *month = ChangeStrToInt(GetSubString(idCode, 11, 12));
        *day = ChangeStrToInt(GetSubString(idCode, 13, 14));
        *age = currentYear - *year;
    
        if (ChangeStrToInt(GetSubString(idCode, 15, 17)) % 2 == 0)
        {
            *gender = 0;
        }
        else
        {
            *gender = 1;
        }
    }
    int main()
    {
        char idCode[30] = "";
        int year, month, day, age, currentYear = 2021, gender;
        year = month = day = age = gender = 0;
    
        printf("输入18位的身份证号码[如:429004197507022369]:");
        gets(idCode);    
        GetIDCodeInfo(idCode, currentYear, &year, &month, &day, &age, &gender);
        //printf("\n输入身份证号码为:%s\n 当前年份为:%d\n\t 出生日期为:[%4d/2d:%2d]\n\t 年龄:%d\n\t 性别:%s", idCode,currentYear,year,month,day,age,gender == 0? "女":"男"); 
        printf("\n输入身份证号码为:%s\n当前年份为:%d\n出生日期为:[%4d-%2d-%2d]\n年龄:%d\n性别:%s\n", idCode, currentYear, year, month, day, age, gender == 0 ? "女" : "男");
    
        getchar();
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突