/* gcc -Wall -ansi -o slova slova.c */ #include <stdio.h> #include <string.h> #define N 256 void scanstring(char *s) { char c=' '; int i=0; c = getchar(); while (c != '\n' && c != EOF && i<N) { s[i++] = c; c = getchar(); } s[i]='\0'; } void main(void) { char s1[N]; char s2[N]; char s3[4*N]=""; char delimiters[]=" "; char glasnye[]="aeiouy"; char soglasnye[]="bcdfghjklmnpqrstvwxz"; char* token; /* snachala vvodim stroki s1 i s2 */ printf("Vvedite pervuyu stroku: "); scanstring(s1); printf("s1=\"%s\"\n",s1); printf("Vvedite vtoruyu stroku: "); scanstring(s2); printf("s2=\"%s\"\n",s2); /***************/ /* function strtok vozvrashaet ukazatel' na slova pri etom stroka s1 budet 'razrushena' */ token = strtok (s1, delimiters); /* token => words */ while(token!=NULL) { if(memchr (glasnye, (char)token[0], strlen(glasnye)) != NULL) { if(strlen(s3)>1) sprintf(s3,"%s %s",s3,token); else sprintf(s3,"%s",token); } token = strtok (NULL, delimiters); } /***********************/ token = strtok (s2, delimiters); /* token => words */ while(token!=NULL) { if(memchr (soglasnye, (char)token[0], strlen(soglasnye)) != NULL) { if(strlen(s3)>1) sprintf(s3,"%s %s",s3,token); else sprintf(s3,"%s",token); } token = strtok (NULL, delimiters); } printf("---------------\n"); printf("s3=\"%s\"\n",s3); } |