Передача параметров в функцию - C (СИ) (71329)
Формулировка задачи:
Здравствуйте. Пишу аналог функции strtok. Начал на с++ и написал код:
Потом решил, всё это дело переписать на Си, но возникла проблема, вот этот параметр:
компилятор Си отказывается принимать, подскажите, пожалуйста, как это дело уладить.
p.s. str1 должна сохранять все изменения которые она претерпела в функции. Приведенный выше код полностью рабочий на C++. То что mstrtok не совсем strtok, на это внимание можете не обращать.
Заранее спасибо за ответы.
Листинг программы
- char *mstrtok(char * &str1, const char *str2)
- {
- char *str3;
- if (str1 == NULL)
- return NULL;
- while (*str1 != '\0' && *str1 == *str2)
- str1++;
- str3 = str1;
- while (*str1 != '\0' && *str1 != *str2)
- str1++;
- if (*str1 != '\0')
- {
- str1 = str1++;
- str1[-1] = 0;
- }
- else
- {
- str1 = NULL;
- }
- return str3;
- }
Листинг программы
- char * &str1
Решение задачи: «Передача параметров в функцию»
textual
Листинг программы
- char *mstrtok(char **str1, const char *str2)
- {
- char *str3;
- if (*str1 == NULL)
- return NULL;
- while (**str1 != '\0' && **str1 == *str2)
- (*str1)++;
- str3 = *str1;
- ...
Объяснение кода листинга программы
- В функции
mstrtok
принимаются два параметра:str1
иstr2
. - Переменная
str3
инициализируется значением*str1
. - Проверяется, является ли
*str1
равнымNULL
. Если это так, то функция возвращаетNULL
. - В цикле происходит проверка, равен ли символ, на который указывает
*str1
, нулю или символу, на который указываетstr2
. Если это так, то*str1
увеличивается на 1. - После цикла
str3
содержит подстроку, начинающуюся с первого символа, не совпадающего с последним символом вstr2
. - Возвращается значение
str3
. - ... (продолжение реализации функции не указано в предоставленном коде)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д