0

请帮助我,我无法解决我在大学遇到的这个问题。我在我们大学论坛上问过,他们说这个线索:“如果你向strcat发送一个长字符串,或者你发送字符串B,有什么区别?”

解释下一个程序有什么问题:

#include <string.h>
#include <stdio.h>
int main()
{
    char A[10];
    char B[20];
    strcpy(A, "A student");
    strcpy(B, "fail the exam");
    printf("%s\n", strcat(A, B));
    return 0;
}
4

4 回答 4

2

的第一个参数strcat必须足够大以包含连接的结果字符串。所以将其更改为:

char A[30];

否则您可能会遇到分段错误。

于 2013-07-30T05:54:16.853 回答
2

请参阅“学生未通过考试”大于 10

所以至少使用char A[24]而不是char A[10]

于 2013-07-30T05:59:50.867 回答
1

因为strcat(s,t)将 t 连接到 s 的末尾,所以 s 必须足够大以容纳新的连接字符串。它返回一个指向 s 中第一个字符的指针。

于 2013-07-30T07:16:56.940 回答
0

数组 A 应该足够大以容纳数组 B 的内容,否则 strcat 行为是不可预测的,可能会发生分段错误,应用程序可能会崩溃。请参阅下面的链接。[链接] http://linux.die.net/man/3/strcat

于 2013-07-30T08:07:44.277 回答