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