Autor
|
Tema: leer desde archivo en c (Leído 6,405 veces)
|
mataliebres
Desconectado
Mensajes: 19
|
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
|
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
mataliebres
Desconectado
Mensajes: 19
|
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
Mensajes: 155
|
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
Mensajes: 1.639
|
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
Mensajes: 19
|
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
Mensajes: 19
|
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
Mensajes: 1.639
|
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
Mensajes: 19
|
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
Mensajes: 1.639
|
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: #include <stdio.h> #include <stdlib.h> #define MAX_LINEAS 1024 #define MAX_CHARS 1024 #define NOM_ARCHIVO "main.c" int main(void) { FILE *in; long pos[MAX_LINEAS]; int num_pos; char linea[MAX_CHARS]; int i; int ch; if ((in = fopen(NOM_ARCHIVO , "rt")) == NULL ){ return EXIT_FAILURE; } /* Obtenemos la posicion de inicio de cada linea en el archivo */ ch = '\n'; num_pos = 0; do { if (ch == '\n' && (ch = fgetc(in )) != EOF ){ pos [num_pos ++] = ftell(in ); } }while ((ch = fgetc(in )) != EOF ); /* Posicionamiento sobre cada linea de la ultima a la primera */ i = num_pos; while (i > 0){ i--; fseek(in , pos [i ], SEEK_SET ); fgets(linea , MAX_CHARS , in ); } return EXIT_SUCCESS; }
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
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Leer xml desde archivo batch
Scripting
|
Dead0922
|
8
|
10,145
|
8 Mayo 2009, 13:20 pm
por Dead0922
|
|
|
Leer archivo LOG desde Query SQL Server 2008
Bases de Datos
|
Shell Root
|
5
|
14,897
|
1 Diciembre 2011, 12:21 pm
por Novlucker
|
|
|
problema al leer gauss desde un archivo
Programación C/C++
|
Idmus
|
1
|
2,036
|
14 Noviembre 2013, 19:36 pm
por Idmus
|
|
|
Leer archivo json desde vb.net ...? ayuda !!!
.NET (C#, VB.NET, ASP)
|
lordhackerbynary
|
2
|
9,100
|
26 Agosto 2016, 09:30 am
por Eleкtro
|
|
|
AYUDA, Leer desde un archivo
Programación C/C++
|
Kougami
|
0
|
1,780
|
18 Diciembre 2016, 20:34 pm
por Kougami
|
|