Considere el siguiente código. La función myStrcat concatena dos strings. Añade todos los caracteres de b al final de a. Entonces, el resultado esperado es «Geeks Quiz». El programa compila bien pero produce una falla de segmentación cuando se ejecuta.
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; }
¿Cuál de los siguientes cambios puede corregir el programa para que imprima «Geeks Quiz»?
(A) char *str1 = “Geeks”; se puede cambiar a char str1[100] = “Geeks”; y se agrega una línea a[m+n-1] = ‘\0’ al final de myStrcat
(B) Se agrega una línea a[m+n-1] = ‘\0’ al final de myStrcat
(C ) Se añade una línea ‘a = (char *)malloc(sizeof(char)*(strlen(a) + strlen(b) + 1)) al principio de myStrcat()
(D) char *str1 = “Geeks” ; se puede cambiar a char str1[100] = “Geeks”;
Respuesta: (D)
Explicación: La opción (D) es correcta.
Consulte lo siguiente para obtener una explicación.
https://www.geeksforgeeks.org/storage-for-strings-in-c/
Prueba de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA