我怎么解释这个:sprintf(var_ptr_char + strlen(var_ptr_char).... C代码

时间:2017-09-14 17:00:27

标签: c printf buffer strcat string.h

我怎么解释这个: var_ptr_char + strlen(var_ptr_char) 在下面的C代码中:

#define INT_CONSTANT 80
char var_ptr_char[1024];
strcat(var_ptr_char,"SOMETHING");
sprintf(var_ptr_char+strlen(var_ptr_char),":%d",INT_CONSTANT);

以及通过snprintf更改sprintf所需的大小。

谢谢!

1 个答案:

答案 0 :(得分:0)

sprintf的第一个参数是char指针(即char缓冲区。)该函数将在该缓冲区“打印”并将从指向的位置开始。指针。

N 添加到指针,意味着指向第N个位置。因此,如果我们将strlen(var_ptr_char)添加到var_ptr_char,我们就会有效地将指针传递给缓冲区的最后一个字符(假设它已包含有效字符串)。

snprintf来电可能是这样的:

snprintf(var_ptr_char + strlen(var_ptr_char), 1024 - strlen(var_ptr_char) - 1, ":%d", INT_CONSTANT);

TL; DR:它将字符串追加到var_ptr_char中已存储字符串的末尾。