#include <stdio.h>
#include <stdlib.h>
#define TAM 100
char strsub(char *c1, char *c2);
int buscar_cadena(char *c1, char *c2);
void leer_cadena(char cad[]);
int main(){
char c1[TAM],c2[TAM];
int res;
leer_cadena(c1);
leer_cadena(c2);
res=strsub(c1, c2);
if(res==0) puts("Las cadenas son iguales (ambas incluidas una en otra)");
else if(res==1) puts("Primera cadena incluida en segunda");
else if(res==2) puts("Segunda cadena incluida en primera");
else if(res==3) puts("Las cadenas no estan incluidas ninguna en otra");
system("PAUSE");
return 0;
}
//Cabecera: char strsub(char *c1, char *c2);
//Precondicion:Dos cadenas inicializadas
//Postcondicion: Devuelve si una cadena esta contenida en otra y viceversa
char strsub(char *c1, char *c2){
int c2enc1, c1enc2;
c2enc1= buscar_cadena(c1,c2);
c1enc2= buscar_cadena(c2,c1);
if(c2enc1==-1)
if(c1enc2==-1){
return 3;
} /* no hay inclusiones */
else return 1; /*c1 incluida en c2*/
if(c1enc2==-1){
return 2;
} /*c2 incluida en c1 */
return 0; /* c1 y c2 son iguales */
}
//Cabecera: int buscar_cadena(char *c1, char *c2);
//Precondicion:Dos cadenas inicializadas
//Postcondicion: Posicion de una en otra
int buscar_cadena(char c1[], char c2[]){
int pos=0;
int i;
while(1){
for(i=0;c1[pos+i]!=' ' && c2[i]!=' ';i++)
if(c1[pos+i]!=c2[i]) break;
if(c2[i]==' ') return pos;
if(c1[pos+i]==' '){
printf("El primer caracter se encontro en la posicion %in",pos+1);
return -1;
}
pos++;
}
}
//Cabecera: leer_cadena(char cad[])
//Precondicion: cad inicializada
//Postcondicion: lee una cadena
void leer_cadena(char cad[]){
int i;
puts("Introduce cadena y pulsa ENTER para terminar la cadena");
fgets(cad, 100, stdin);
fflush(stdin);
}