Páginas: [1]
|
 |
|
Autor
|
Tema: Error al abrir el archivo (Leído 474 veces)
|
juampilotus
Desconectado
Mensajes: 3
|
hola!
Mi problema es este, al ejecutar el programa me tira un error diciendo que el programa a sufrido un problema y debe cerrarse, busque en donde podria haber sido el error y llegue a la parte en que abre el archivo, pero no se como solucionarlo. Me mate buscando en Google pero no encontre a nadie que tenga un error parecido.
el programa compila perfecto, el problema es solo cuando lo ejecuto.
Les dejo el codigo asi lo ven:
#include <stdio.h>
typedef struct{ FILE* archivo; }reg;
int main(int argc,char* argv[]){ char* cadena; char* dir; reg* registro; char abrir[3]= "r"; printf("Por favor ingrese una linea: "); dir=gets(cadena); registro->archivo=fopen(dir,abrir); if (registro->archivo==NULL) printf("no se pudo abrir el archivo"); else printf("se pudo abrir el archivo"); fclose(registro->archivo); getchar(); return 0; }
espero que puedan ayudarme gracias!
|
|
|
|
|
En línea
|
|
|
|
Flakito81
Desconectado
Mensajes: 350
|
Hola! Los problemas son: 1- cadena es un puntero, ¿pero que tamaño tiene? o le das un valor como lo he corregido o usas un malloc / new (para c++). En definitiva estas intentando meter una frase/palabra en un espacio dnd no cabe sino 1 o 2 caracteres. 2- Unicamente has de cerrar el fichero si ha sido abierto ¿por qué? Pues xq cnd intentas abrir un fichero y no puede retorna NULL e intentar cerrar un NULL va dar un error. #include <stdio.h> typedef struct{ FILE* archivo; }reg; int main(int argc,char* argv[]){ char cadena[15]; char *dir; reg* registro; char abrir[3]= "r"; printf("Por favor ingrese una linea: "); dir = gets(cadena); registro->archivo=fopen(dir, abrir); if (registro->archivo==NULL) printf("no se pudo abrir el archivo"); else { printf("se pudo abrir el archivo"); fclose(registro->archivo); //solo si se pudo abrir es cuando tenemos q cerrarlo } getchar(); return 0; } Saludos! PD: Podrias usar la variable cadena en vez de dir
|
|
|
|
|
En línea
|
|
|
|
juampilotus
Desconectado
Mensajes: 3
|
Gracias por tu ayuda, eran errores que cometia muy seguido, pero me sigue tirando el mismo error!
La verdad que ya no se que pensar, no tengo ni idea de que puede ser!
Les agradezco todo tipo de ayuda
Saludos
|
|
|
|
|
En línea
|
|
|
|
Flakito81
Desconectado
Mensajes: 350
|
Pega los errores para poder ayudarte; aunque el código que te he puesto no tiene ningun error, de hecho está compilado y probado. Si quieres haz un debugger para que sepas q almacena cada variable. Como el programa es pekeño usa printf para ver el contenido de las variables.
Un saludo
|
|
|
|
|
En línea
|
|
|
|
|
|
juampilotus
Desconectado
Mensajes: 3
|
Bueno muchachos esto es lo que tengo: #include <stdio.h> #include<stdlib.h> typedef struct ej{ FILE* archivo; }estr;
int main(int argc,char* argv[]){ char cadena[15]; estr* estruc; char abrir[3]= "r"; int cerrar; estruc=malloc(sizeof(struct ej)); printf("Por favor ingrese una linea: "); fflush(stdin); scanf("%s",cadena); estruc->archivo=fopen(cadena, abrir); if (estruc->archivo==NULL) printf("no se pudo abrir el archivo"); else { printf("se pudo abrir el archivo\n"); cerrar=fclose(estruc->archivo); if (cerrar!= 0) printf("Error al cerrar el archivo"); else printf("El archivo se cerró exitosamente"); } free(estruc); fflush(stdin); printf("\nfinal\n"); getchar(); return 0; } Cuando le tiro la ubicacion del archivo incorrecta anda perfecto, pero cuando le tiro la ubicacion correcta, segun el seguimiento que le hize el error lo tira despues del getchar. El error que me tira es de este tipo:  espero que puedan ayudarme gracias!
|
|
|
|
|
En línea
|
|
|
|
ҒrεακΠιи∂
Desconectado
Mensajes: 121
|
Buenas #include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char str[20]; FILE *f; fgets(str, 20, stdin); str[strlen(str) - 1] = '\0'; if((f = fopen(str, "r")) == NULL){ printf("No se pudo abrir el archivo\n"); }else{ printf("Se abrio el archivo\n"); fclose(f); } getchar(); return 0; } Fijate si eso anda Saludos, FreakMind
|
|
|
|
|
En línea
|
Connoisseurs of C semantics find C++ inferior to ++C 
|
|
|
Flakito81
Desconectado
Mensajes: 350
|
A mi esto no me da ningun error. He probado el codigo. #include <stdio.h> #include<stdlib.h> typedef struct estr{ FILE* archivo; }; int main(int argc,char* argv[]){ char cadena[15]; estr *estruc; char abrir[3]= "r"; int cerrar; estruc = (estr *) malloc(sizeof(estr)); printf("Por favor ingrese una linea: "); fflush(stdin); scanf("%[^\n]",cadena); estruc->archivo=fopen(cadena, abrir); if (estruc->archivo==NULL) printf("no se pudo abrir el archivo"); else { printf("se pudo abrir el archivo\n"); cerrar=fclose(estruc->archivo); if (cerrar != 0) printf("\nError al cerrar el archivo"); else printf("\nEl archivo se cerró exitosamente"); } free(estruc); fflush(stdin); printf("\nfinal\n"); getchar(); } Saludos!
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1]
|
|
|
|