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

📅  最后修改于: 2021-09-24 05:42:38             🧑  作者: Mango

考虑以下代码。函数myStrcat连接两个字符串。它将 b 的所有字符附加到 a 的末尾。所以预期的输出是“Geeks Quiz”。该程序编译良好,但在运行时产生分段错误。

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/
这个问题的测验