注册 登录
编程论坛 C语言论坛

求助: 字符串编辑

追梦人zmrghy 发布于 2022-06-04 15:58, 642 次点击
求助: 字符串编辑


  XXXX年、 XXXX年XX月、 XXXX年XX月XX日
如何判断,字符串str1是哪一种,
知道是,哪一种后。可不可以,使用下面方法取变量。。

int y=0, m=0 d=0;

sscanf(str1,"%d年", y);
sscanf(str1,"%d年%d月", y, m);
sscanf(str1,"%d年%d月%d", y, m, d);

还有这个烦人的 C4996 有没有好的办法,让它以后别再出了。。。
心前C 4996只是警告,现在VS2022直接不让编译了。。。。

程序代码:
#pragma warning(disable: 4996)
#include<stdio.h>
#include<string>
#include<stdlib.h>
#include <conio.h>
void strinput()
{
    char str1[64] = { 0 };
    printf("\n查某年输入格式:\nXXXX年+回车'\n\n");
    printf("查某月输入格式:\nXXXX年XX月 + 回车\n\n");
    printf("查询某天星期几格式:\nXXXX年XX月XX日 + 回车\n\n请输入\n");

    scanf("%s", str1);
    printf("\n%s\n", str1);
}
int main()
{
    strinput();
    return 0;
}


只有本站会员才能查看附件,请 登录
2 回复
#2
追梦人zmrghy2022-06-04 17:51
年(-60, -22)
月(-44, -62)
日(-56, -43)

大家有没有简单的方法呀,又要在char型数组里,数数玩吗?
只有本站会员才能查看附件,请 登录
#3
rjsp2022-06-04 18:12
程序代码:
#define _CRT_SECURE_NO_WARNINGS // VC需要此赘肉,标准C不需要
#include <stdio.h>

void detect( const char* s )
{
    unsigned year, month, day;
    int n = sscanf( s, "%u 年%u 月%u 日", &year, &month, &day );
    switch( n )
    {
    case 3:
        printf( "%04u年%02u月%02u日\n", year, month, day );
        break;
    case 2:
        printf( "%04u年%02u月\n", year, month );
        break;
    case 1:
        printf( "%04u年\n", year );
    default:
        break;
    }
}
int main( void )
{
    detect( "2022年" );
    detect( "2022年6月" );
    detect( "2022年6月1日" );
}
1