我有这样的字符串
char year_cp[5], mon_cp[3], date_cp[3];
char *src;
src = "2017-05-30";
我想将年、月、日期存储在单独的缓冲区中。我也尝试了 strncpy() 和 sprintf() 。像这样
strncpy(mon_cp,&src[4],2); //strncpy(mon_cp, src+4, 3);
mon_cp[2] = '\0';
printf("mon-cp %s\n",mon_cp);
strncpy(year_cp,&src[0],4); //strncpy(year_cp, src+0, 5);
year_cp[4] = '\0';
printf("year-cp %s\n",year_cp);
即使我将 src 字符串传递为
src = "20170530";
它仅复制 mon_cp,而不是将年份复制到year_cp
我遇到了段错误。
请告诉我实现这一目标的最佳方法
最佳答案
您可能应该使用sscanf()
,如下所示:
char * src = "2017-05-30";
unsigned year, month, day;
if(sscanf(src, "%u-%u-%u", &year, &month, &day) < 3) {
/* ERROR */
}
如果由于某种原因您需要将组件作为字符串,仅使用 %s
对您不起作用:您需要使用 snprintf()
调用转换回来或类似的。
关于c - C语言中如何将带有终止符的字符串复制到另一个字符串中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44249243/