gpt4 book ai didi

c - 循环中的 snprintf 在 Linux 上不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:16:55 24 4
gpt4 key购买 nike

循环中的

snprintflinux 上不起作用,但在 windows 上可以正常工作。

#include <stdio.h>
#include <stdlib.h>

int main( int argc, char **argv) {
char buffer[255] ={0};
for ( int i = 0; i < 10; i++) {
snprintf(buffer, 255, "%s:%x\0",buffer, i );
}
printf ( "BUFFER = %s\n", buffer );
return 0;
}

此代码不会附加现有的 buffer,而只会采用最后一次迭代值。

最佳答案

您可以避免将缓冲区用作目标字符串和参数的未定义行为,如下所示:

#include <stdio.h>
#include <stdlib.h>

int main( int argc, char **argv) {
char buffer[255] ={0};
int offset = 0;
for ( int i = 0; i < 10; i++) {
offset += snprintf(buffer + offset, 255 - offset, ":%x\0", i);
}
printf ( "BUFFER = %s\n", buffer );
return 0;
}

关于c - 循环中的 snprintf 在 Linux 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11718573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com