elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como obviar archivo leido si no existe en C linux
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como obviar archivo leido si no existe en C linux  (Leído 2,529 veces)
RicGeo

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Como obviar archivo leido si no existe en C linux
« en: 16 Junio 2014, 23:05 pm »

Hola amigos del ElHacker quisiera que me ayuden con un problema que tengo a la hora de compilar este pequeño programa en C.
Este pequeño programa guarda los numeros que se encuentran dentro de ciertos archivos, hasta ahi todo bien.. el problema empieza cuando quiero condicionar el programa para cuando no exita el archivo del cual quiero tomar sus numeros ... mando a compliar pero en el terminal aparece "Abortado (`core' generado)" y otros codigos sin sentido alguno.
Que me faltaría agregar para que el programa siga ejecutandose cuando no encuentre un archivo?
Código
  1. #include<stdio.h>
  2. int main(){
  3. int i,j,k;
  4. double coord1[31][3],coord2[31][3],coord3[31][3];
  5.   FILE *erp1,*erp2,*erp3;
  6. ///////////////////////////////////////////////////
  7.        erp1=fopen("/home/PROGAMACION/prueba_gg/am01","r");
  8.         if (!erp1)
  9.           //Que puedo poner aca?//
  10.         else{
  11.            erp1=fopen("/home/PROGAMACION/prueba_gg/am01","r");  
  12.            for (i=0,j=0,k=0;i<7,j<7,k<7;i++,j++,k++){
  13.                fscanf(erp1,"%lf\n",&coord1[i][0]);
  14.                fscanf(erp1,"%lf\n",&coord1[j][1]);
  15.                fscanf(erp1,"%lf\n",&coord1[k][2]);
  16.                printf("%lf - %lf - %lf\n",coord1[i][0],coord1[j][1],coord1[k][2]);
  17.                }
  18.             }
  19.        fclose(erp1);
  20. //////////////////////////////////////////////////
  21.       printf("###########################\n");
  22.        erp2=fopen("/home/PROGAMACION/prueba_gg/am02","r");
  23.         if (!erp2)
  24.           //Que puedo poner aca?//
  25.         else{  
  26.            erp2=fopen("/home/PROGAMACION/prueba_gg/am02","r");
  27.            for (i=0,j=0,k=0;i<7,j<7,k<7;i++,j++,k++){
  28.                fscanf(erp2,"%lf\n",&coord2[i][0]);
  29.                fscanf(erp2,"%lf\n",&coord2[j][1]);
  30.                fscanf(erp2,"%lf\n",&coord2[k][2]);
  31.                printf("%lf - %lf - %lf\n",coord2[i][0],coord2[j][1],coord2[k][2]);
  32.                }
  33.             }
  34.        fclose(erp2);
  35. //////////////////////////////////////////////////
  36.       printf("###########################\n");
  37.        erp3=fopen("/home/PROGAMACION/prueba_gg/an02","r");
  38.         if (!erp3)
  39.           //Que puedo poner aca?//
  40.         else{  
  41.            erp3=fopen("/home/PROGAMACION/prueba_gg/an2","r");
  42.            for (i=0,j=0,k=0;i<7,j<7,k<7;i++,j++,k++){
  43.                fscanf(erp3,"%lf\n",&coord3[i][0]);
  44.                fscanf(erp3,"%lf\n",&coord3[j][1]);
  45.                fscanf(erp3,"%lf\n",&coord3[k][2]);
  46.                printf("%lf - %lf - %lf\n",coord3[i][0],coord3[j][1],coord3[k][2]);
  47.                }
  48.             }
  49.        fclose(erp2);
  50. return 0;
  51. }
Agradezco su atencion!!


En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Como obviar archivo leido si no existe en C linux
« Respuesta #1 en: 17 Junio 2014, 00:00 am »

Qué debe hacer el programa cuando no encuentra algún archivo?

Así sin saberlo, yo solamente mandaría un mensaje de error por el stderr:

Código
  1. fprintf(stderr, "ERROR: No se encontro el archivo %s\n", archivo);

Por cierto, el fclose() deberías ponerlo dentro de cada else en lugar de fuera, ya que sino, en el caso de que no encuentre el archivo, el puntero que le pasas no es un puntero válido y puede generar problemas tal y como te está pasando a ti.

Saludos.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines