Передача параметров в функцию - 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. - ... (продолжение реализации функции не указано в предоставленном коде)