Título: Error en programa c++
Publicado por: z_ane_666 en 9 Diciembre 2010, 00:12 am
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 #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; }
Título: Re: Error en programa c++
Publicado por: winroot en 9 Diciembre 2010, 15:50 pm
Buenas! Bien, aunque no programo en c... trata de cambiar los char* por char[tan] Cuando haces: A mi me tira tmb error, y me imagino que es porque char* es un puntero a cadena constante. Espero que te sirva de algo ^^. Abrazo Edit: Porqué el título dice c++? Y esto? tmp += pos + len;
No, no es la clase string, no puedes usar +cadena me parece... Hay funciones en string.h para ese tipo de cosas, no tengo idea si será strncat, pero bueno ^^. Para copiar de una cadena a la otra usa strncpy. Un saludo
|