Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 你能解释一下吗?_C_Printf - Fatal编程技术网

C 你能解释一下吗?

C 你能解释一下吗?,c,printf,C,Printf,下面这行是什么意思 sprintf(version, "%ld%c", tpdu->version, sep); 我在“%ld%c”中感到困惑。这里是如何使用的?%ld%c是两个格式说明符%ld和%c。前者用于long int,后者用于char sprintf将tpdu->version的值、一个long int和sep的值、一个char写入缓冲区version,该行显示 将long inttpdu->version和charsep的值存储到缓冲区version %ld是long int

下面这行是什么意思

sprintf(version, "%ld%c", tpdu->version, sep);

我在
“%ld%c”
中感到困惑。这里是如何使用的?

%ld%c
是两个格式说明符
%ld
%c
。前者用于
long int
,后者用于
char

sprintf
tpdu->version
的值、一个
long int
sep
的值、一个
char
写入缓冲区
version

,该行显示

long int
tpdu->version
char
sep
的值存储到缓冲区
version


%ld
long int
的格式说明符,而
%c
char
的格式说明符。为了更好地理解它,您必须在心里将整个格式说明符
%ld%c
拆分为更基本的标记。如果在每个%符号处拆分,则会得到:
%ld
%c

%ld
长int
的占位符

%c
字符的占位符

因此,整个声明:


long int
(即
tpdu->version
字段的内容)和
char
(即
sep
变量的内容)打印到名为
version

sprintf(buf,“%ld;”,tpdu->errindex,sep)的字符串缓冲区中;格式说明符%ld,这里使用分号?为什么?so@user3125224不需要分号,我在你问的问题中没有看到这样的东西,恕我直言,首先是RTFM。(这是一句谚语,不是针对个人的)。@SouravGhosh:OP可能会因为两个格式说明符之间缺少空间而感到困惑。OP可能是一个初学者,他可能认为
%ld%c”
是一个单一的格式说明符,他无法破译。告诉他把这个说明符分成两部分(
%ld
%c
)的答案比“RTFM”要好。这个社区应该更欢迎和更友好的初学者。@Mr.C64请查看时间表。已经发布了两个答案。在此之后,我发表了评论,据我所知,一个问题应该反映出这一部分特别缺乏的研究成果。@Mr.C64并且说初学者友好并不意味着我们可以欢迎跳过部分。@SouravGhosh恕我直言,请继续并关闭选项卡!!!
sprintf(version, "%ld%c", tpdu->version, sep);