Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.01.2023, 09:31   #1
pl300
 
Регистрация: 29.01.2023
Сообщений: 4
По умолчанию Си.Строки текста

Вставить перед каждым восклицательным знаком вопросительный знак.
pl300 вне форума Ответить с цитированием
Старый 02.02.2023, 04:55   #2
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Код:
#include <assert.h>
#include <stdlib.h>
#include <string.h>

char* insert_question_marks(const char* text) {
  int read_pos, result_len, write_pos;
  char elem;
  char* result;

  /* первый проход: определяем длину результата */
  read_pos = 0;
  result_len = 0;
  for (;;) {
    elem = text[read_pos++];
    if (elem == '\0') {break;} /* если дошли до конца текста */
    if (elem == '!') {
      result_len++;
    }
    result_len++;
  }

  /* выделяем блок памяти в heap-е */
  result = (char*)malloc(result_len + 1); /* sizeof(char) = 1, по определению языка C */
  if (result == NULL) { /* если не получилось выделить блок памяти */
    return NULL;
  }

  /* второй проход: копируем элементы исходной строки и вставляем '?' */
  read_pos = 0;
  write_pos = 0;
  for (;;) {
    elem = text[read_pos++];
    if (elem == '\0') {break;} /* если дошли до конца текста */
    if (elem == '!') {
      result[write_pos++] = '?';
    }
    result[write_pos++] = elem;
  }
  assert(write_pos == result_len);
  result[write_pos] = '\0'; /* завершающий нулевой элемент */

  return result;
}

int main() {
  char* mt;
  mt = insert_question_marks("a! b! c!");
  if (mt == NULL) {
    return 1;
  }
  assert(strcmp(mt, "a?! b?! c?!") == 0);
  free(mt); /* освобождаем блок памяти */
  return 0;
}
Пётр Седов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напишите программу, которая в последовательности целых чисел определяет их сумму и подсчитывает разность количества положительных и отрицательных чисел последовательности. roma1808 C# (си шарп) 0 08.05.2018 23:33
с++ Вводится последовательность ненулевых чисел,0-конец последовательности, определить наибольшее число в последовательности ЮськаЮськовна Помощь студентам 3 10.11.2015 15:20
Если число x встречается в последовательности, упорядочить по невозрастанию часть последовательности (Паскаль) димон4ик_ Помощь студентам 1 17.10.2011 23:00
Определить:формат последовательности параметров & способ размещения последовательности переменных DenSyntax Помощь студентам 0 22.06.2010 17:26
Определить k-ую цифру последовательности Фибоначчи и последовательности натуральных чисел. Med Помощь студентам 1 20.03.2009 11:40