gpt4 book ai didi

c - C中的字符串连接

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:54 25 4
gpt4 key购买 nike

char *str1 = malloc(256*sizeof(char));
char *str2 = "stack"
for (i=0;i<15;i++){
sprintf(str1,"%s%s",str1,str2);
}
printf("%s\n",str1);

我试图在每次循环计数时将 str2 连接到 str1。但是此代码段有效但易受攻击。连接它们的最佳方式是什么?

最佳答案

根据 CERT 安全编码指南,您需要 use pointers to const when referring to string literals .

因此,char *str2 = "stack" 需要是 const char *str2 = "stack";

这将使它不可变。

此外,您正在使用 deprecated/obsolete functions .您应该使用的安全函数是 strcat_s。例如,

合规示例

enum { BUFFERSIZE=256 };

void complain(const char *msg) {
static const char prefix[] = "Error: ";
static const char suffix[] = "\n";
char buf[BUFFERSIZE];

strcpy_s(buf, BUFFERSIZE, prefix);
strcat_s(buf, BUFFERSIZE, msg);
strcat_s(buf, BUFFERSIZE, suffix);
fputs(buf, stderr);
}

在这里阅读关于 strcpy_s() and strcat_s() 的信息.

关于c - C中的字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421544/

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