我想在每次迭代中存储地址值,并在稍后的时间点打印zip。现在使用下面的代码,我想念最后的零。如果地址值在3次迭代中为5450,3220,3450,我想打印
5450 3220 3450
但是下面有代码打印
545322345
。如何使它计数0和空格。
char zip[100];
char addr[100];
for (int i=0; i<10; i++)
{
SPRINTF(zip+strlen(zip),addr);
}
#define SPRINTF(string_in, args...) \
(void)snprintf(string_in, sizeof(string_in),## args)
答案 0 :(得分:2)
这更有可能做你想做的事情:
for (int i=0; i<10; i++)
{
// ... whatever is setting 'addr' to something new
strncat(zip, addr, sizeof(zip));
}
现在我们使用zip
(100)的大小,而不是指针的大小,并且即使缓冲区中剩余的“空”空间较少,大小仍然是正确的。