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