Рубрики

C | Строка | Вопрос 1

Рассмотрим следующий код. Функция myStrcat объединяет две строки. Он добавляет все символы b к концу a. Таким образом, ожидаемый результат — «Geeks Quiz». Программа компилируется нормально, но при запуске выдает ошибку сегментации.

#include <stdio.h>

  

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»;
(B) char * str1 = «Гики»; можно изменить на char str1 [100] = «Geeks»; и строка a [m + n-1] = '/ 0' добавляется в конце myStrcat
(C) В конце myStrcat добавлена строка a [m + n-1] = '/ 0'
(D) Строка 'a = (char *) malloc (sizeof (char) * (strlen (a) + strlen (b) + 1)) добавляется в начале myStrcat ()

Ответ: (А)
Объяснение: см. Следующее для объяснения.

http://espressocode.top/storage-for-strings-in-c/

Рекомендуемые посты:

C | Строка | Вопрос 1

0.00 (0%) 0 votes