C - strcat出错

Dvi*_*aim 0 c string struct strcat strcat-s

这段代码中的错误是什么?我有一个错误

error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead
Run Code Online (Sandbox Code Playgroud)

这是什么意思?另一个问题 - 结构和函数原型的声明是合法的吗?

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

void main()
{
    char *join(char *, char *);
    printf("%s \n", join("duck", "soup"));   
}

char *join(char *s1, char *s2)
{
    struct {
        char buf[256];
    } string;
string.buf = "abcd";\\ new line. error l-value.
    return strcat(strcpy(string.buf, s1), s2);
}
Run Code Online (Sandbox Code Playgroud)

新行 - 为什么会出错?不是string.bufchar指针?有什么问题char *s="abcd"?谢谢!:)

Dav*_*rtz 5

错误消息完全不言自明.目前尚不清楚你不理解它是什么.例如,在你的join函数中,如果两个字符串一起超过255个字符,就会发生可怕的事情.

此外,您的join功能完全破碎.它返回一个指向缓冲区的指针,该缓冲区一旦返回就不再存在,因为您将它分配给要返回的堆栈.