c - 从 C 中的日期中提取数字

标签 c string char

我接到一项任务,要求转换日期中的数字。

我们以字符字符串形式获取日期,例如 18.2.2014,我需要提取整数 18, 2, 2014。

我的方法并不完美...

您认为最好的方法是什么?

void luckChoice(char a[]){

    int month=10*(a[3]-'0')+(a[4]-'0');
    int day=(a[0]-'0')*10+(a[1]-'0');
    int year=(a[9]-'0')+(a[8]-'0')*10+(a[7]-'0')*100+(a[6]-'0')*1000;

最佳答案

我不知道您是否同意,但您可以直接在 scanf() 本身中执行此操作。

只需将输入作为

if (scanf("%d.%d.%d", &dd, &mm, &yy) == 3) { …OK… } else { …failed… }

这将忽略“.”按指定顺序输入。

否则您可以使用 sscanf() 函数,如下所示:

void luckChoice(char a[]){
     int dd,mm,yy;
     sscanf(a,"%d.%d.%d",&dd,&mm,&yy);
}

关于c - 从 C 中的日期中提取数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47686603/

相关文章:

c - 打印c字符串指针

c - RSA key 生成

c - 使用 mmap() 映射多个进程共享内存区域

c - 打印 ASCII 框不起作用

java - 将十进制转换为十六进制的编写代码 - 但输出顺序错误

c - fopen 不能在 linux 中为名称中包含德语字符的文件工作

Javascript\\b字符串转义问题

c - fopen 不兼容类型 char (*)[9] 而不是 C 中的 char(*)

c# - 如何将两个字母的国家/地区代码转换为标记表情符号?