Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda con ficheros

Estas en el tema de Duda con ficheros en el foro de C/C++ en Foros del Web. Aclaro que tengo Windows XP y Vista, y en ninguno de los dos me funciona este programa: Código: #include <stdio.h> #include <stdlib.h> int main() { ...
  #1 (permalink)  
Antiguo 14/06/2008, 06:41
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 4 meses
Puntos: 0
Duda con ficheros

Aclaro que tengo Windows XP y Vista, y en ninguno de los dos me funciona este programa:

Código:
#include <stdio.h> 
#include <stdlib.h> 


int main() 
    { 
    FILE *fichero; 
    char letra; 

    fichero = fopen("C:\\hola.txt","r"); 

if ((fichero = fopen("hola.txt","r")) == NULL){ 
   perror("hola.txt"); 
   system("pause"); 
   exit(1); 
}
        
    printf( "Contenido del fichero:\n" ); 
    letra=getc(fichero); 
    
    while ((letra = getc(fichero)) != EOF) 
    
   putchar(letra); 

if (ferror(fichero)){ 
    
 printf ("se ha producido un erro"); 
    
} 
    if (fclose(fichero)!=0) 
       printf( "Problemas al cerrar el fichero\n" ); 
    

    return 0; 
     }

Me aparece lo siguiente:

hola.txt: No such file o directory.


Ayudaaaa!!

Gracias
  #2 (permalink)  
Antiguo 14/06/2008, 12:51
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Duda con ficheros

Se esta ejecutando 2 veces fopen()

fichero = fopen("C:\\hola.txt","r"); // 1 vez

if ((fichero = fopen("hola.txt","r")) == NULL){ // otra vez

y la segunda vez especificando solo el nombre del archivo, en este caso, el archivo tendria que estar en el mismo directorio que el ejecutable, sino el archivo no sera encontrado.

Si el fopen tiene exito, lo recomendable es hacer fclose() despues (solo para el caso exitoso).
  #3 (permalink)  
Antiguo 14/06/2008, 13:19
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Duda con ficheros

Pues con lo que me has dicho he hecho lo siguiente:

Código:
#include <stdio.h>
#include <stdlib.h>


int main()
    {
    FILE *fichero;
    char letra;

   fichero = fopen ("C:\hola.txt", "r");
    
    if ((fichero == NULL){
   perror("C:\hola.txt");
 
  
   
   if (fichero != NULL)
   fclose (fichero);
   
   exit(1);
   system("pause");
}
       
    printf( "Contenido del fichero:\n" );
    letra=getc(fichero);
    
    while ((letra = getc(fichero)) != EOF)
   
   putchar(letra);

if (ferror(fichero)){
   
 printf ("se ha producido un erro"); 
   
} 
    if (fclose(fichero)!=0)
       printf( "Problemas al cerrar el fichero\n" );
    


    return 0;
     }

Y ahora lo que pasa es que sale la ventana del programa y se cierra sin dejarme ver nada, en menos de un segundo vamos.

¿Qué ocurre?

Gracias por la repuesta. ;)
  #4 (permalink)  
Antiguo 14/06/2008, 13:35
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Duda con ficheros

Seria bien conveniente que indentaras tus programas, tal como esta es dificil seguir la pista. Un error particular que noto, que probablemente no sea lo que ocurre en tu programa es que la logica de error

if ((fichero == NULL){

CONTIENE adentro la logica

if (fichero != NULL)

lo que creo que jamas podra cumplirse.

Sospecho que el archivo no lo encontro' y se fue por ese camino, haciendo exit(1), antes de hacer pause(). Si quieres la pausa, hazla antes de exit().

Al abrir el archivo, si llegas a usar el backslash dentro de comillas dobles, tienes que ponerla 2 veces, eso estaba bien en el primer programa, y ahora en el segundo las eliminaste.
  #5 (permalink)  
Antiguo 14/06/2008, 14:24
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Duda con ficheros

He corregido lo que me has dicho, y me sigue sin aparecer la ventana cuando ejecuto... :(
  #6 (permalink)  
Antiguo 14/06/2008, 18:40
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Duda con ficheros

Muestra el programa final que tienes.
  #7 (permalink)  
Antiguo 15/06/2008, 05:30
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Duda con ficheros

Pues ahora ya me aparece lo que sale en el archivo "hola", lo que pasa que la primera letra de ese archivo de texto no sale... ¿POr qué puede ser?



Código:
#include <stdio.h>
#include <stdlib.h>


int main()
    {
    FILE *fichero;
    char letra;

   fichero = fopen ("C:\\hola.txt", "r");
    
    if (fichero == NULL)
   printf ("error de archivo");
 
  
   
   if (fichero != NULL)
  { printf( "Contenido del fichero:\n" );
    letra=getc(fichero);
   fclose (fichero);
     system("pause");
   exit(1);
} 

       
    
    
    while ((letra = getc(fichero)) != EOF)
   
   putchar(letra);

if (ferror(fichero)){
   
 printf ("se ha producido un erro"); 
   
} 
    if (fclose(fichero)!=0)
       printf( "Problemas al cerrar el fichero\n" );
    


    return 0;
     }
  #8 (permalink)  
Antiguo 15/06/2008, 06:04
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Duda con ficheros

Cuando has tenido exito con la apertura del archivo, solo lees 1 caracter, luego cierras el archivo y luego sales.. lo que hay despues (ciclos y demases, no se ejecuta)


Código:
   if (fichero != NULL)
  { printf( "Contenido del fichero:\n" );
    letra=getc(fichero);    // lees 1 caracter
   fclose (fichero);        // cierras
     system("pause");
   exit(1);                 // sales
}
  #9 (permalink)  
Antiguo 15/06/2008, 10:09
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Duda con ficheros

Pero no sé lo que tengo que hacer para que se imprima por pantalla la primera letra del archivo..Además de que el resto si que sale, la única que falta es la primera letra.
  #10 (permalink)  
Antiguo 15/06/2008, 10:27
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Duda con ficheros

Bastante extraño lo que ocurre. la variable fichero o es NULL o no es, despues de hacer fopen(), de modo que o te ha salido "error de archivo" en la salida, o te ha salido 1 solo caracter. No veo posible que el ciclo pueda ejecutarse.

La variable letra deberia ser int.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:30.