I made a program that pretends to be the function strstr
, of the library string.h
. Enter 2 strings per keyboard and the function finds the second string in the first one by returning a pointer (if it does not find it returns NULL
) that points to the first string (where the second one is located).
I do not know how to perform the function without modifying the original string. When the function returns the "pointer" (pointer type char
that returns to main
) and automatically modifies the original string, and do not want that.
I hope I have been clear, of course, thank you very much.
#include <stdio.h>
#include <stdlib.h>
#define TAM 30
char* mistrstr(const char*,const char*);
int main()
{
char cadena[TAM];
char cadena1[TAM];
char *aparicion;
printf("Ingrese la primer cadena:");
gets(cadena);
fflush(stdin);
printf("Ingrese la segunda cadena:");
gets(cadena1);
fflush(stdin);
aparicion=mistrstr(cadena,cadena1);
printf("Primera aparicion (con mi funcion):%s\n",aparicion);
return 0;
}
/////////////////////////////////////////////////////
char* mistrstr(const char* cadena,const char* cadena1)
{
int i=-1;
char *apuntador,*cad,*cad1;
apuntador=cadena;
cad=(char*)cadena;
cad1=(char*)cadena1;
while(*cad)
{
if(*cad1==*cad)
i=0;
else
cad++;
while(i>=0)
{
*(apuntador+i)=*cad;
i++;
cad++;
if(*cad==' #include <stdio.h>
#include <stdlib.h>
#define TAM 30
char* mistrstr(const char*,const char*);
int main()
{
char cadena[TAM];
char cadena1[TAM];
char *aparicion;
printf("Ingrese la primer cadena:");
gets(cadena);
fflush(stdin);
printf("Ingrese la segunda cadena:");
gets(cadena1);
fflush(stdin);
aparicion=mistrstr(cadena,cadena1);
printf("Primera aparicion (con mi funcion):%s\n",aparicion);
return 0;
}
/////////////////////////////////////////////////////
char* mistrstr(const char* cadena,const char* cadena1)
{
int i=-1;
char *apuntador,*cad,*cad1;
apuntador=cadena;
cad=(char*)cadena;
cad1=(char*)cadena1;
while(*cad)
{
if(*cad1==*cad)
i=0;
else
cad++;
while(i>=0)
{
*(apuntador+i)=*cad;
i++;
cad++;
if(*cad=='%pre%')
{
*(apuntador+i)='%pre%';
return apuntador;
}
}
}
return NULL;
}
////////////////////////////////////////////////
')
{
*(apuntador+i)='%pre%';
return apuntador;
}
}
}
return NULL;
}
////////////////////////////////////////////////