【发布时间】:2015-12-23 03:20:38
【问题描述】:
我有一个日期字符串,格式为 yyyymmdd。我需要找出日、月、年并将它们存储在单独的字符串中并进一步使用它们。 我写了以下代码
char *date="20151221";
char day[2];
char month[2];
char year[4];
sprintf(day, "%c%c", date[6], date[7]);
sprintf(month, "%c%c", date[4], date[5]);
sprintf(year, "%c%c%c%c", date[0], date[1],date[2],date[3]);
lr_output_message("day is %s",day);
lr_output_message("month is %s",month);
lr_output_message("year is %s",year);
但是得到的输出是
日期是 21122015
月份是 122015
年份是 2015 年
也许这是一个愚蠢的问题,但我是 C 的新手。有人可以解释一下原因吗?
【问题讨论】:
-
当您使用 sprintf 时,它会在字符串末尾附加一个空值。问题是您正在用空值覆盖相邻变量。这是未定义的行为。查看 sprintf 的手册页。
-
你知道一个 2 字符的字符串实际上包含 3 个字符吗?例如,“ab”是“a”、“b”和“\0”。
标签: c arrays printf loadrunner