繁体   English   中英

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

[英]Finding the error in my use of the strcat function

请帮助我,我无法解决我上大学时遇到的这个问题。 我在我们的大学论坛上问,他们说了这条线索:“如果将长字符串发送给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;
}

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

char A[30];

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

看到“学生考试不及格” 大于10

因此,至少要使用char A[24]而不是char A[10]

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM