[英]C program: memcpy is copying weird data
C 程序:memcpy 函数似乎复制了错误的数据。 目的是取一个字符数据的日期参数(EX:“2019-01-06-20.03.29.004217”),将其作为整数转换为YYYYMMDD格式。 我的目标是在将它们存储为字符串时仅读取年、月和日的数字。 然后,将所有内容连接成一个字符串。 最后,我想将 YYYYMMDD 字符串转换为整数并返回。
执行时,我只看到返回的年份。 这是 C 无法识别的东西吗? 我不知道为什么会这样。 请协助。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int getNumDate2 (char *dte);
int main()
{
char prodDate[26 + 1];
strcpy(prodDate,"2019-01-06-20.03.29.004217");// original date of character data
printf("%d", getNumDate2(prodDate));
return 0;
}
int getNumDate2(char *dte)
{
static char orig_date[26 + 1];
static char new_date[8 + 1];
static char year[4 + 1];
static char mth[2 + 1];
static char day[2 + 1];
int new_date_num;
strcpy(orig_date, dte);//store original characters from date
memcpy(year, orig_date, sizeof(year));//copy year
memcpy(mth, orig_date+5, sizeof(mth));//copy month
memcpy(day, orig_date+8, sizeof(day));//copy year
strcat(new_date, year);//concat date
strcat(new_date, mth);
strcat(new_date, day);
sscanf(new_date,"%d", &new_date_num);//convert string YYYYMMDD to integer YYYYMMDD
return new_date_num;
}
为什么不使用scanf
可以做的一些事情:
int getNumDate2(char *dte) {
int year, month, day;
sscanf(dte, "%d-%d-%d", &year, &month, &day);
return (year*100+month)*100+day;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.