C++ 如何使用strlen计算sprintf中的空间和负载
我希望在每次迭代中存储地址值,并在稍后的时间点打印zip。现在有了下面的代码,我错过了最后的零。如果地址值在3次迭代中为545032203450,我想打印C++ 如何使用strlen计算sprintf中的空间和负载,c++,C++,我希望在每次迭代中存储地址值,并在稍后的时间点打印zip。现在有了下面的代码,我错过了最后的零。如果地址值在3次迭代中为545032203450,我想打印 5450 3220 3450 但下面的代码会打印出来 545322345。如何使其计数为0和空格 char zip[100]; char addr[100]; for (int i=0; i<10; i++) { SPRINTF(zip+strlen(zip),addr);
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)
char-zip[100];
字符地址[100];
对于(int i=0;i而言,这更有可能实现您想要的功能:
for (int i=0; i<10; i++)
{
// ... whatever is setting 'addr' to something new
strncat(zip, addr, sizeof(zip));
}
for(int i=0;iIs sprint)输入错误或我们不知道的宏?你真的在胡说八道:5050是有效数字吗?对不起,它的宏与snprintf相同。那么你的代码打印在哪里呢?请注意,SPRINTF
宏,如所称,变成了snprintf(zip+strlen(zip),sizeof(zip+strlen(zip)),addr)
。看起来像sizeof(char*)
对于您来说是4
,因此每次最多添加4个字符(3个来自addr
+结尾0
字节)。