0

столкнулся с проблемой, что в структуре switch - case, при выборе блока где необходимо ввести данные, он не ожидает введения данных, а прогоняет все тело и завершает работу Часть кода:

case 2:
    {
        char str[MAX_LENGTH]; // создаем массив для хранения введенной строки
        printf("Введите строку символов: ");
        fgets(str, MAX_LENGTH, stdin); // считываем строку символов из консоли
    int len_str = strlen(str); // вычисляем длину строки
    char* reversed = (char*)malloc(len_str + 1); // выделяем память под отзеркаленную строку



        char* ptr, * rev_ptr;
        ptr = str; // присваиваем указателю ptr адрес начала массива str
        rev_ptr = reversed; // присваиваем указателю rev_ptr адрес начала массива reversed

        // перебираем элементы строки str с конца и копируем их в массив reversed при помощи указателей
        int i;
        for (i = len_str - 1; i >= 0; i--) {
            *(rev_ptr++) = *(ptr + i); // увеличиваем указатель rev_ptr, чтобы записывать следующие символы в правильном порядке
        }

        *(rev_ptr) = '\0'; // добавляем завершающий символ в конец перевернутой строки

        printf("\n\033[38;2;95;255;175mМассив с символами:\033[0m ''%s''\n\n", str); // выводим исходную строку
        printf("\033[38;2;95;255;175mОтзеркаленый массив с символами:\033[0m ''%s''\n", reversed); // выводим перевернутую строку

        free(reversed); // освобождаем выделенную память
        return 0; 

}

Заранее благодарю за помощь!

  • А спорим, перед этим считывали эту 2, которая в case, с помощью scanf? :) – Harry Apr 10 '23 at 14:42
  • Да, для перехода к блоку 2 , использовал scanf – IdaGGerI Apr 10 '23 at 15:13

1 Answers1

-2

Разобрался сам, достаточно было после:
printf("Введите строку символов: ");
Добавить:
getchar()

Может кому-то в будущем пригодится

  • Ну попробуйте введите пару пробелов после 2 и посмотрите... – Harry Apr 10 '23 at 17:07