#include <stdio.h> #include <string.h> int main(int argc, char* argv[]) { char text1[256]; int h; char text2[256]=""; char* token; char delimiters[]=" "; char bukvy[]="AaBbCcDdEeFfGgJjHhIiGgKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"; char cyfry[]="1234567890"; int isvar=1, i; fgets(text1,255,stdin); h=strlen(text1); if(text1[h-1]=='\n') text1[h-1]='\0'; /* get rid of \n*/ h=strlen(text1); printf("stroka \"%s\" dlinoj %d symvolov\n",text1,h); /* analiziruem slovo za slovom */ token = strtok (text1, delimiters); /* token => words */ while(token!=NULL) { isvar=1; /* token - ukazatel' na slovo iz stroki text1 */ printf("--- slovo \"%s\" dlinoj %d simvolov\n",token,strlen(token)); /* nado proverit' chto pervyj symvol v token est' bukva */ if(memchr (bukvy, (char)token[0], strlen(bukvy)) != NULL) { printf(" pervaya bykva %c ok\n",(char)token[0]); /* nado proverit' chto vse ostal'nye symvoly v token est' bukvy i cyfry */ for(i=1;i<strlen(token);i++) { if((memchr (bukvy, (char)token[i], strlen(bukvy)) == NULL)&&\ (memchr (cyfry, (char)token[i], strlen(cyfry)) == NULL)) { /* etogo symvola token[i] net ni v buvah, ni v cyfrah*/ printf(" slovo \"%s\" ne est\' peremennaya iz-za \"%c\"\n",token,(char)token[i]); isvar=0; } } } else isvar=0; if(isvar==1) { printf("slovo %s - imya peremennoj\n",token); if(strlen(text2)==0)sprintf(text2,"%s", token); else sprintf(text2,"%s %s",text2, token); } token = strtok (NULL, delimiters); } printf("\n\nVse peremennye: %s\n",text2); return 0; } |