Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.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 printf/sprintf疯狂(自发连接)_C_Printf_Concatenation - Fatal编程技术网

C printf/sprintf疯狂(自发连接)

C printf/sprintf疯狂(自发连接),c,printf,concatenation,C,Printf,Concatenation,我有一个程序,它采用2x24位整数,通过sprintf将它们转换成strings,并将它们组合成一个表示58位数字的字符串。 节目: int buffer_h=0x001FFFFF; int buffer_l=0x002ffff; int i,j=0; charres_h[10]; char res_l[10]; char res_all[12]; sprintf(res_h,“%06X”,buffer_h); sprintf(res_l,“%06X”,buffer_l); 对于(i=0;i您必

我有一个程序,它采用2x24位整数,通过
sprintf
将它们转换成
strings
,并将它们组合成一个表示58位数字的字符串。 节目:

int buffer_h=0x001FFFFF;
int buffer_l=0x002ffff;
int i,j=0;
charres_h[10];
char res_l[10];
char res_all[12];
sprintf(res_h,“%06X”,buffer_h);
sprintf(res_l,“%06X”,buffer_l);

对于(i=0;i您必须以null终止(
'\0'
res\u all
printf
只能在以空结尾的字符串上决定性地工作。我猜你很幸运,
res\u all
正好位于内存中正好以空结尾的
resu l
之前。你也可以很容易地在某个地方被除掉。

nullchar term
res\u all
中的ator可能会大大提高您的成功几率。这一点,以及缓冲区的适当大小。正如@WhozCraig所说。或者,您可以打印一个字符缓冲区,该缓冲区不以null结尾,只需显式指定一个精度:
printf(%.12s),res\u all);
(使字符串以null结尾将允许它与许多标准函数一起使用,因此这是更好的方法。)…你的重点是什么?我可以看到我的答案是如何被这样解释的。我不是想暗示“/0”==null。我只是想说你需要以null终止字符串,而“/0”是你指定null终止符的方式。等等…是的,这就是我的意思…我有斜杠读写困难症。“printf仅在以null结尾的字符串上决定性地工作。”不正确。代码可以使用printf(“%.12s”,res_all);。如果字符串和缓冲区小于12字节,并且字符串未以null结尾,该怎么办?
int buffer_h = 0x001FFFFF;
int buffer_l = 0x002FFFFF;
int i,j = 0;

char res_h[10];
char res_l[10];
char res_all[12];

sprintf(res_h,"%06X",buffer_h);

sprintf(res_l,"%06X",buffer_l);

for(i=0;i<6;i++) {
    res_all[i] = res_h[i];
}

for(i=0;i<6;i++) {
    res_all[i+6] = res_l[i];
}

printf("%s",res_all);