如何使用strcpy收集变量

时间:2014-05-22 16:49:15

标签: c strcpy

我在收集变量方面遇到了一些问题。

我目前的代码:

strcpy (date, year);
strcat (date, "-");
strcat (date, month);
strcat (date, "-");

printf("%s" , date);

结果我希望2014-04为例子,但目前它给了我2014-042014-04-

因此出于某种原因,它会打印两次。有人知道出了什么问题吗?

1 个答案:

答案 0 :(得分:2)

您可以通过让printf完成工作而不是尝试自己组装字符串来解决问题:

int year = 2014;
int month = 4;
printf("%04i-%02i", year, month);

一般来说,使用strcat不是一个好主意。它容易出现缓冲区溢出,并且在较新版本的C标准中已弃用。使用printf意味着您不需要中间date缓冲区,避免了与缓冲区溢出,缺少NULL终止等相关的问题。

如果您希望将结果放在变量中而不是将其打印出来,只需将printf替换为snprintf

char buffer[BUFFER_LEN] = {0};
snprintf(buffer, sizeof(buffer), "%04i-%02i", year, month);