Показать сообщение отдельно

  #4  
Старый 01.12.2009, 00:03
Domen
Новичок
Регистрация: 30.11.2009
Сообщений: 1
Провел на форуме:
5092

Репутация: 0
Question

Доброго времени суток!
Не могу написать часть кода на С это 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;
}
 
Ответить с цитированием