Передача параметров в функцию - C (СИ) (71329)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Пишу аналог функции strtok. Начал на с++ и написал код:
Листинг программы
  1. char *mstrtok(char * &str1, const char *str2)
  2. {
  3. char *str3;
  4. if (str1 == NULL)
  5. return NULL;
  6. while (*str1 != '\0' && *str1 == *str2)
  7. str1++;
  8. str3 = str1;
  9. while (*str1 != '\0' && *str1 != *str2)
  10. str1++;
  11. if (*str1 != '\0')
  12. {
  13. str1 = str1++;
  14. str1[-1] = 0;
  15. }
  16. else
  17. {
  18. str1 = NULL;
  19. }
  20. return str3;
  21. }
Потом решил, всё это дело переписать на Си, но возникла проблема, вот этот параметр:
Листинг программы
  1. char * &str1
компилятор Си отказывается принимать, подскажите, пожалуйста, как это дело уладить. p.s. str1 должна сохранять все изменения которые она претерпела в функции. Приведенный выше код полностью рабочий на C++. То что mstrtok не совсем strtok, на это внимание можете не обращать. Заранее спасибо за ответы.

Решение задачи: «Передача параметров в функцию»

textual
Листинг программы
  1. char *mstrtok(char **str1, const char *str2)
  2. {
  3.     char *str3;
  4.    
  5.     if (*str1 == NULL)
  6.         return NULL;
  7.    
  8.     while (**str1 != '\0' && **str1 == *str2)
  9.         (*str1)++;
  10.    
  11.     str3 = *str1;
  12.     ...

Объяснение кода листинга программы

  1. В функции mstrtok принимаются два параметра: str1 и str2.
  2. Переменная str3 инициализируется значением *str1.
  3. Проверяется, является ли *str1 равным NULL. Если это так, то функция возвращает NULL.
  4. В цикле происходит проверка, равен ли символ, на который указывает *str1, нулю или символу, на который указывает str2. Если это так, то *str1 увеличивается на 1.
  5. После цикла str3 содержит подстроку, начинающуюся с первого символа, не совпадающего с последним символом в str2.
  6. Возвращается значение str3.
  7. ... (продолжение реализации функции не указано в предоставленном коде)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы