Функция не возвращает значение - C (СИ)
Формулировка задачи:
int main()
{
// ...
int words=my_strtok();
//....
}
int my_strtok()
{
char _string[length]=" "; //Промежуточная строка
int u=0;
int uu=0;
for(int i=0;i<strlen(str-1);i++)
{
if(str[i]>='А' && str[i]<='я' || str[i]=='/')
{
_string[u]=str[i];
u++;
}
else
{
if(str[i+1]>='А' && str[i+1]<='я')
{
strcpy(Array_String[uu], _string);
memset(_string, 0, sizeof(_string));
u=0;
uu++;
}
}
}
return uu;
}Решение задачи: «Функция не возвращает значение»
textual
Листинг программы
static char pszTemp[MAX_PATH];
static int iCurr = 0;
unsigned int MyStrToken(char* pszStr)
{
memset(pszTemp,0,sizeof(pszTemp));
int iPos = iCurr;
while (pszStr && *pszStr && pszStr[iPos])
{
while (pszStr[iPos] && (((pszStr[iPos] >= 'А') && (pszStr[iPos] <= 'я')) || pszStr[iPos] == '/'))
{
++iPos;
}
int iSize = iPos - iCurr;
if (iSize)
{
memcpy(pszTemp,&pszStr[iCurr],iSize);
iCurr = iPos;
return iSize;
}
++iPos;
++iCurr;
}
return 0;
}
int main(int argc,char** argv)
{
unsigned int iSize = 0;
while (iSize = MyStrToken("А роза упала на лапу Азора!"))
{
printf("Size: %d Str: %s\n",iSize,pszTemp);
}
return 0;
}
Объяснение кода листинга программы
- В функции MyStrToken происходит разбиение строки на подстроки.
- В каждой подстроке удаляются все символы, на которые не указывает указатель.
- Результатом работы функции является размер подстроки, которую она возвращает.
- В функции main вызывается функция MyStrToken с аргументом
А роза упала на лапу Азора!. - В цикле while выводится на экран размер и сама подстрока.
- Размер подстроки постепенно уменьшается, пока не станет равным нулю.
- Цикл while завершается и функция main возвращает 0.