Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Zeigon en 05 de Enero de 2003, 05:28:46 PM

Título: ayuda sobre funciones de ficheros
Publicado por: Zeigon en 05 de Enero de 2003, 05:28:46 PM
                                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                                
Título: ayuda sobre funciones de ficheros
Publicado por: Forum Master en 06 de Enero de 2003, 12:34:55 PM
                                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                                
Título: ayuda sobre funciones de ficheros
Publicado por: synchrnzr en 07 de Enero de 2003, 12:57:11 PM
                                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                                
Título: ayuda sobre funciones de ficheros
Publicado por: nostromo en 16 de Enero de 2003, 04:05:37 PM
                               
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.                                
Título: ayuda sobre funciones de ficheros
Publicado por: ethernet en 16 de Enero de 2003, 08:19:50 PM
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