C - strcat 错误

标签 c string struct strcat strcat-s

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

error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead

这是什么意思?另一个问题——结构体和函数原型(prototype)的声明是否合法?

#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);
}

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

最佳答案

错误消息完全不言自明。不清楚你不明白的是什么。例如,在您的 join 函数中,如果两个字符串的总长度超过 255 个字符,就会发生可怕的事情。

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

关于C - strcat 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28739773/

相关文章:

c - 这种 scanf 用法有什么问题?

iOS - 编译依赖

c - 如何从二进制文件中读取反转的数字?

c - 从传递给函数的结构中写入成员会产生意外结果

C#:将字符列表转换为字符串

python - 如何以编程方式对 python 字符串进行切片?

c++ - 如何访问另一个源文件中 'struct' 的静态成员

c++ - 访问列表 vector 中的结构

c - 这个结构的 sizeof 发生了什么?

.net - 使用正则表达式将字符串映射到功能