Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





ayuda sobre funciones de ficheros

Iniciado por Zeigon, 05 de Enero de 2003, 05:28:46 PM

« anterior - próximo »

Zeigon

                                tengo unas preguntillas sobre q hacen o dejan de hacer unas funciones de tratamiento de ficheros, son unas pocas dudas pero es q leyendolo de un libro tal cual, no me queda muy claro:

-  FILE * freopen("nombre fichero", modo de apertura, FILE *stream);

para q sirve el último parámetro? la función ya devuelve un stream al fichero abierto pero el tercer parámetro ni idea. esta función lo q hace simplemente es reasignar un puntero a otro archivo, no??

- funciones: fputc, fgetc, fputw, fgetw. estas cogen un caracter o palabra del archivo que se pasa, pero el archivo tiene q estar en modo texto, digamos, me refiero q las letras y las palabras no se cogen de variables, sino de texto en sí tal cual, no??

- diferencia entre fwrite, fread / fprintf, fgets, fputs: las primeras 2, guardan y cogen info guardada en variables, en cambio las otras, guardan y cogen info pero en modo texto, no en variables, no?
Luego otra historia es fscanf, q esa ya no sé ni para q sirve  :(

y ya por ultimo, haciendo un programa con estas funciones, me creaba un txt con una frase guardada con fprintf, pero al ver la info o desde el archivo, o desde el programa abriendo dicho archivo, se veia lo guardado pero con unos simbolos raros detras o delante de la frase. logré solucionarlo cerrando el archivo despues de escribir la frase y reabriendolo antes de leer. significa esto q en cada operacion de escritura o lectura hay q abrir y cerrar el archivo q se usa?, no se pueden en la misma "tanda" leer y escribir cosas??

muchas gracias al q responda, pq esto me tiene loco

Zeigon                                
eigon
----------------------------------------------
El arca de Noe fue construida por amateurs.
El Titanic por profesionales.

Forum Master

                                De lo que se yo... para grabar y luego leer tienes que abrir modo escritura cerrar y luego abrir modo lectura, creo que no hay otra forma ...  :-?

Y el fscanf es como el scanf. El scanf lee lo que escribas en el teclado y lo guarda a una variables (desde el principio hasta el primer espacio, es decir si escribes una frase solo guarda la primera palabra), y el fscanf hace lo mismo pero con un fichero, va leyendo 'palabra' por palabra. Si haces fscanf 3veces ese ultimo fscanf habra guardado la tercera palabra del fichero que hayas especificado.

Eso es lo basico que me se :D                                
tratos

synchrnzr

                                Creo que debería existir alguna función fflush() o algo así para enviar los datos al disco sin cerrar el archivo aunque ahora mismo no lo tengo muy presente ^_^'

Sync                                

nostromo

                               
Citar- diferencia entre fwrite, fread / fprintf, fgets, fputs: las primeras 2, guardan y cogen info guardada en variables, en cambio las otras, guardan y cogen info pero en modo texto, no en variables, no?
..........


1. fwrite,fread es para escribir o leer buffers("arrays" o punteros a memoria), lo que pasa es que si haces un buffer de longitud int,char... coges/pones los datos en estas(variables) int/char ...

2. fprintf escribe una cadena formateada "a la printf" en el fichero

3. fgets y fputs -> es para escribir/leer lineas de texto.... en los modos de texto tienes que tener en cuenta que cuando escribes lineas creo que se le añade el avance de linea n o r  (o ambos segun el sistema operativo)
y cuando las lees te quita el n

4. en las de tipo(poner caracter) "fputc" en modo texto tienes que llevar cuidado porque actuan segun el sistema operativo, por ejemplo en windows si envias un 'n' te lo traduce a "nr"(que es el "estandard" ms-dos) )

En general con las funciones de texto hay que mirar bien la documentación para saber como tratan los retornos de carro r y saltos de linea n

Tambien decirte las más usudas que son fopen,fclose en general  :)
y fwrite,fread,fseek(para localizarte dentro del fichero) para  modo binario
y luego fgets,fputs para modo texto


Un saludo.                                

ethernet

Cuando abres para lectura/escritura antes de cambiar de accion (pasar de escritura a lectura por ejemplo) hay q hacer un fflush. Lo pone mucho mas claro en la MSDN .

saludos






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.