考虑以下代码。函数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/
这个问题的测验