-1

我怎么能解释这个: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 我将放置多少大小。

谢谢!

4

1 回答 1

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

于 2017-09-14T17:02:07.400 回答