PUERTA | Sudo GATE 2020 Mock II (10 de enero de 2019) | Pregunta 55

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *