Antes que nada , buenos dias
Me baje este codigo(hecho para turbo c++ 3.00), lo compile en dicho programa y funciona bien , pero cuando lo pase a codeblocks(usa gnu gcc compiler),compilo bien, pero al ejecutar y poner un caracter de busqueda(El programa es para buscar caracteres en un archivo) la aplicacion falla y sale la ventana de que ha encontrado un problema y debe cerrarse
¿Que estaré haciendo mal? ¿Que hay que cambiar? Espero que puedan ayudarme
Codigo
Código:
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <fcntl.h>
#include <process.h>
#include <sys\stat.h>
#include <string.h>
int buscar ( char *archivo, char *cadena );
int encontrar_ocurrencias( char *cadena, char *subcadena );
int main(void)
{
char *archivo = "C:\\readme.TXT";
char *cadena;
printf("Ingrese cadena a buscar: ");
gets(cadena);
int resul = buscar(archivo, cadena);
if(resul==0)
printf("No se ha encontrado la cadena\n");
else
printf("Coincidencias encontradas: %d\n", resul);
system("PAUSE");
return 0;
}
int buscar ( char *archivo, char *cadena )
{
char ch;
char *texto;
int controlador, i;
/* Abre archivo */
if ((controlador = open(archivo, O_RDONLY | O_BINARY, S_IWRITE |
S_IREAD)) == -1)
{
printf("Error al abrir archivo\n");
exit(1);
}
/* Lee el archivo y va colocando el contenido en la variable: texto */
texto[0] = '\0';
for(i=0; !eof(controlador); i++)
{
read(controlador, &ch, 1);
texto[i] = ch;
}
texto[i]='\0';
/* Cierra archivo */
close (controlador);
return encontrar_ocurrencias(texto, cadena);
}
int encontrar_ocurrencias( char *cadena, char *subcadena )
{
char *tmp = cadena;
char *pdest;
int ocur = 0, pos;
int len = strlen(subcadena);
while(1)
{
pdest = strstr( tmp, subcadena );
if( !pdest ) break;
pos = pdest - tmp;
tmp += pos + len;
ocur++;
}
return ocur;
}