
01.12.2009, 00:03
|
|
Новичок
Регистрация: 30.11.2009
Сообщений: 1
Провел на форуме: 5092
Репутация:
0
|
|
Доброго времени суток!
Не могу написать часть кода на С это strtok.
Очень нужна помощь.
Код:
#include <stdio.h>
int SimSlovo( char *Slovo);//prototip
int strlen(char *s);
char *strtok (char * str, const char * tokens);
int strlen(char *s)
{
char* p=s;
while (*s) s++;
return s-p;
}
char *strtok (char *str, const char *tokens)
{
static char *ptr = NULL; //prisvaivaem znachenie 0
if (str) ptr = str; //esli stroka to ptr= stroka
for (ptr; *ptr>0; ptr++) //proverki vvedennogo
if (!ptr) return NULL;
for (char *p = ptr; *ptr; ptr++) //(znachenie uk stroki;ukazateli \0;uvelichenie znach stroki)
for (const char *tk = tokens; *tk; tk++)//ukazateli const tk na tokkens
if (*ptr == *tk) //sravnenie simvola stroki
{
*ptr++ = 0;
return p;
}
return NULL;
}
int SimSlovo(char *Slovo) //function
{
int i=0,j=0;
j=strlen(Slovo)-1; //prisvoenie indeksa poslednei bukvi
for (i=0;i<=j;i++,j--) //chitaem slovo s dvuh storon
{ //do vstrechi
if (Slovo[i]!=Slovo[j]) return 1; //ne ravno znachit 0
}
return 0;//ravno 1
}
int main()
{
char *input;//stroka sodergachaia simvoli
char *deltel=" ,"; //simvol ogranichiteli
char strok[1000];
char edel;
int len;
int pos;
input=strok;
gets(strok);
len=strlen(input); //opredeliaem dlinu stroki (eto budet konec stroki)
pos=0; //nachalo stroki
while(len>pos)
{
input = strtok(input,deltel);//nahodim simvol ' ,' v input
pos=pos+strlen(input)+1; //i berem ukazatel na sleduiuschii simvol
//pozicia zaverscheniia
if(*input ) //esli v stroke schtoto esti
{
if ( SimSlovo(input)==1) //poluchaem resultat function
{
printf(" ");
printf(input); //vivodim naidenii
}
input+=strlen(input)+1;
/*perehodim k sleduiuchemu slovu i zaverschaem
proverku prediduchego */
}
}
return 0;
}
|
|
|