在我使用strcat函数时发现错误

时间:2013-07-30 05:47:51

标签: c strcpy strcat

请帮助我,我无法解决这个问题,我已经上大学了。我在大学论坛上问道,他们说了这个线索:“如果你向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 个答案:

答案 0 :(得分:2)

strcat的第一个参数必须足够大才能包含连接的结果字符串。所以改成它:

char A[30];

或者您可能会遇到分段错误。

答案 1 :(得分:2)

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

所以至少使用char A[24]代替char A[10]

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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