📌  相关文章
📜  门| Sudo GATE 2020 Mock II(2019年1月10日)|第55章

📅  最后修改于: 2021-06-28 19:28:14             🧑  作者: Mango

考虑下面的代码。函数myStrcat连接两个字符串。它将b的所有字符附加到a的末尾。因此,预期输出为“极客测验”。程序可以正常编译,但是在运行时会产生分段错误。

void myStrcat(char *a, char *b)
{
    int m = strlen(a);
    int n = strlen(b);
    int i;
    for (i = 0; i <= n; i++)
       a[m+i]  = b[i];
}
  
int main()
{
    char *str1 = "Geeks ";
    char *str2 = "Quiz";
    myStrcat(str1, str2);
    printf("%s ", str1);
    return 0;
}

以下哪项更改可以更正程序,以便打印“ Geeks Quiz”?
(A) char * str1 =“极客”;可以更改为char str1 [100] =“ Geeks”;在myStrcat的末尾添加a [m + n-1] =’\ 0’行
(B)在myStrcat的末尾添加a [m + n-1] =’\ 0’行
(C)在myStrcat()的开头添加’a =(char *)malloc(sizeof(char)*(strlen(a)+ strlen(b)+ 1))行
(D) char * str1 =“极客”;可以更改为char str1 [100] =“ Geeks”;答案: (D)
说明:选项(D)是正确的。
请参阅以下说明。

http://www.geeksforgeeks.org/storage-for-strings-in-c/
这个问题的测验