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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  leer desde archivo en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: leer desde archivo en c  (Leído 5,792 veces)
mataliebres

Desconectado Desconectado

Mensajes: 19


Ver Perfil
leer desde archivo en c
« en: 26 Febrero 2015, 18:45 pm »

buenas, alguien sabe si hay una funcion para leer el archivo desde el final hasta el principio?
estoy buscando pero no encuentro nada


En línea

fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: leer desde archivo en c
« Respuesta #1 en: 26 Febrero 2015, 18:54 pm »

No, no hay una función que te realice todo eso.

Mírate esto:
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Manejo_de_archivos


En línea

Un byte a la izquierda.
mataliebres

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: leer desde archivo en c
« Respuesta #2 en: 26 Febrero 2015, 23:12 pm »

y hay alguna forma de guardar en primer lugar siempre un numero? me explico, guardar un numero y despues al guardar otro se ponga el primero, no a continuacion del primero
En línea

sabeeee

Desconectado Desconectado

Mensajes: 155


Ver Perfil
Re: leer desde archivo en c
« Respuesta #3 en: 27 Febrero 2015, 02:08 am »

Jajaja si que hay, depende el tipo y tamaño de archivo o para que lo uses.
En línea

"Vengándose, uno iguala a su enemigo; perdonando, uno se muestra superior a él."
Francis Bacon
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: leer desde archivo en c
« Respuesta #4 en: 27 Febrero 2015, 02:44 am »

hay alguna forma de guardar en primer lugar siempre un numero? me explico, guardar un numero y despues al guardar otro se ponga el primero, no a continuacion del primero
Depende de la forma en que abras el archivo y guardes los datos en el, algo que debes explicar a detalle.

A grandes rasgos es posible en dos escenarios, si se trata de un archivo:
A) de texto plano y el numero en realidad es un dígito (o bien se imprimió indicando una anchura de campo suficiente para el valor máximo del tipo).
B) binario (apertura en modo "b" y escritura con fwrite).

En ambos casos basta con abrir el archivo en modo "r+" (mas "b" dependiendo del caso), colocarse al principio del archivo con fseek y por ultimo utilizar la misma función para escribir los datos en el.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
mataliebres

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: leer desde archivo en c
« Respuesta #5 en: 27 Febrero 2015, 07:27 am »

la funcion con la que lo escribo es fprintf() y es solo un digito y con un espacio en blanco para despues ir leyendo uno a uno con fscanf(), mirare la funcion que me has dicho para colocarse siempre al principio, muchas gracias compañero
se me olvidaba el archivo es de texto normal, no binario
« Última modificación: 27 Febrero 2015, 07:31 am por mataliebres » En línea

mataliebres

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: leer desde archivo en c
« Respuesta #6 en: 2 Marzo 2015, 11:49 am »

pues no funciona como dices, lo que hace es sobreescribir el numero, pero lo que quiero es que se vayan añadiendo uno delante de otro
el codigo es este

int main(int argc, char *argv[])
{     FILE *archivo1=fopen("archivo1.txt","r+");
      FILE *archivo2=fopen("archivo2.txt","r+");
      if(archivo1==NULL)
       {
       printf("el archivo1.txt no se puede abrir");
       system("PAUSE");
       return EXIT_SUCCESS;
       }
      if(archivo2==NULL)
       {
       printf("el archivo2.txt no se puede abrir");
       system("PAUSE");
       return EXIT_SUCCESS;
       }   
                             
    int numero=2, potencia,cont=0,resultado,mult,lectura=0,digito;
    printf("numero : ");
    scanf("%i",&potencia);
   
   
    for(int i=1;i<=potencia;i++)
    {
      while(1!=2)                     
     
      {if(fscanf(archivo1,"%i",&lectura)==EOF)break;
         
       else
        {
         
          resultado=lectura*numero;
          fprintf(archivo2,"%i ",resultado) ;
          fseek (archivo2,0L,SEEK_SET);
         
         
         }
    }               
    }
   
    fclose(archivo1);
    fclose(archivo2);
    system("PAUSE");
    return EXIT_SUCCESS;
}
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: leer desde archivo en c
« Respuesta #7 en: 6 Marzo 2015, 15:17 pm »

pues no funciona como dices, lo que hace es sobreescribir el numero
Todas las operaciones en archivos sobrescriben o bien agregan al final

pero lo que quiero es que se vayan añadiendo uno delante de otro
No es posible insertar en un archivo.

Hay varias alternativas, la mas sencilla consiste en:
1) Abres el archivo original y uno auxiliar.
2) Envías los datos como deseas al archivo auxiliar.
3) Cierras los archivos.
4) Eliminas el archivo original mediante la función remove.
5) Renombras el archivo auxiliar con el nombre del original mediante la función rename.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
mataliebres

Desconectado Desconectado

Mensajes: 19


Ver Perfil
Re: leer desde archivo en c
« Respuesta #8 en: 6 Marzo 2015, 15:26 pm »

estamos en las mismas rir3760, yo lo que quiero es leer de un archivo desde el final hasta el principio, pero por lo visto no se puede, asi que me han recomendado lo de poner la funcion fseek() al principio para escribir antes del primer numero y asi cuando se leyera seria igual que leer desde el final del archivo pero no funciona, si hago lo que dices se copiaria tal cual esta el primero no?
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: leer desde archivo en c
« Respuesta #9 en: 7 Marzo 2015, 16:47 pm »

yo lo que quiero es leer de un archivo desde el final hasta el principio, pero por lo visto no se puede
Es posible y relativamente fácil en el caso de archivos binarios, en el caso de archivos de texto plano hay varias limitaciones.

Una aproximación consiste en leer cada uno de los caracteres en el archivo tomando nota cuando se requiera del inicio de cada linea mediante la función ftell. Ya con la posición de cada linea puedes utilizar fseek para posicionarte en la que tu quieras y leerla (recordando que las operaciones de lectura bien sobrescriben o agregan al final, no insertan).

Un programa de ejemplo donde se imprime cada una de las lineas de un archivo de texto empezando con la ultima y terminando con la primera:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX_LINEAS  1024
  5. #define MAX_CHARS   1024
  6.  
  7. #define NOM_ARCHIVO  "main.c"
  8.  
  9. int main(void)
  10. {
  11.   FILE *in;
  12.   long pos[MAX_LINEAS];
  13.   int num_pos;
  14.   char linea[MAX_CHARS];
  15.   int i;
  16.   int ch;
  17.  
  18.   if ((in = fopen(NOM_ARCHIVO, "rt")) == NULL){
  19.      perror(NOM_ARCHIVO);
  20.      return EXIT_FAILURE;
  21.   }
  22.  
  23.   /* Obtenemos la posicion de inicio de cada linea en el archivo */
  24.   ch = '\n';
  25.   num_pos = 0;
  26.   do {
  27.      if (ch == '\n' && (ch = fgetc(in)) != EOF){
  28.         ungetc(ch, in);
  29.         pos[num_pos++] = ftell(in);
  30.      }
  31.   }while ((ch = fgetc(in)) != EOF);
  32.  
  33.   /* Posicionamiento sobre cada linea de la ultima a la primera */
  34.   i = num_pos;
  35.   while (i > 0){
  36.      i--;
  37.      fseek(in, pos[i], SEEK_SET);
  38.      fgets(linea, MAX_CHARS, in);
  39.      printf("%s", linea);
  40.   }
  41.   fclose(in);
  42.  
  43.   return EXIT_SUCCESS;
  44. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Leer xml desde archivo batch
Scripting
Dead0922 8 9,667 Último mensaje 8 Mayo 2009, 13:20 pm
por Dead0922
Leer archivo LOG desde Query SQL Server 2008
Bases de Datos
Shell Root 5 14,626 Último mensaje 1 Diciembre 2011, 12:21 pm
por Novlucker
problema al leer gauss desde un archivo
Programación C/C++
Idmus 1 1,809 Último mensaje 14 Noviembre 2013, 19:36 pm
por Idmus
Leer archivo json desde vb.net ...? ayuda !!!
.NET (C#, VB.NET, ASP)
lordhackerbynary 2 8,472 Último mensaje 26 Agosto 2016, 09:30 am
por Eleкtro
AYUDA, Leer desde un archivo
Programación C/C++
Kougami 0 1,520 Último mensaje 18 Diciembre 2016, 20:34 pm
por Kougami
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines