如何使用strcat()函数?

2023-12-05

我对C语言很陌生。我试图使用 strcat 函数。

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

int main(int argc, const char *argv[]) {
    char s1[] = "12345";
    char s2[] = "abcde";

    strcat(s1, s2);

    puts(s1);
    puts(s2);
    return 0;
}

这个运行正常,但是

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

int main(int argc, const char *argv[]) {
    char* s1 = "12345";
    char* s2 = "abcde";

    strcat(s1, s2);

    puts(s1);
    puts(s2);
    return 0;
}

最后一个未能返回结果。为什么两种不同的声明方式在strcat函数中返回不同的结果。提前致谢。


这两个代码片段都会调用未定义的行为。在第一个片段中s1没有足够的空间容纳六个字符以外的任何其他字符。
在第二个片段中,您尝试修改字符串文字。任何修改字符串文字的尝试都会导致未定义的行为。

Read strcat手册页:

[...] 字符串不能重叠,并且dest字符串必须有足够的空间来容纳结果。如果dest不够大,程序行为不可预测;缓冲区溢出是攻击安全程序的最喜欢的途径.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用strcat()函数? 的相关文章

随机推荐