相关疑难解决方法(0)

strcat目标数组的大小

参加以下计划:

#include <iostream>
#include <cstring>

using namespace std;

int main()
{
    char a[8] = "Hello, ";
    char b[7] = "world!";

    strcat(a, b);

    cout << a;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

请注意,a并且b其大小与指定的字符串相同.

该文件规定,对于strcat(a, b)工作,a需要足够大,以包含串联的结果字符串.

不过,cout << a显示"Hello, world!".我进入未定义的行为吗?

c c++ strcat

6
推荐指数
1
解决办法
822
查看次数

"C语言中的strcat函数混淆假设目标字符串足够大,可以保存源字符串及其自身的内容."

所以我读到该strcat函数将被仔细使用,因为目标字符串应该足够大以容纳其自己和源字符串的内容.我写的以下程序也是如此:

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

int main(){
    char *src, *dest;
    printf("Enter Source String : ");
    fgets(src, 10, stdin);
    printf("Enter destination String : ");
    fgets(dest, 20, stdin);
    strcat(dest, src);
    printf("Concatenated string is %s", dest);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但对于我在这里写的那个不是这样的:

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

int main(){
    char src[11] = "Hello ABC";
    char dest[15] = "Hello DEFGIJK";
    strcat(dest, src);
    printf("concatenated string %s", dest);
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该程序最终添加两者而不考虑目标字符串不够大.为什么会这样?

c string strcat

2
推荐指数
2
解决办法
555
查看次数

标签 统计

c ×2

strcat ×2

c++ ×1

string ×1