我在收集变量方面遇到了一些问题。
我目前的代码:
strcpy (date, year);
strcat (date, "-");
strcat (date, month);
strcat (date, "-");
printf("%s" , date);
结果我希望2014-04
为例子,但目前它给了我2014-042014-04-
因此出于某种原因,它会打印两次。有人知道出了什么问题吗?
答案 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);