MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación > Webmasters - Diseño Web - Programación - Diseño gráfico

Guardar datos de un fichero en un vector

(1/1)

Zahira:
Hola!!
A ver si sé explicar esta dudilla.
En un programa que me digan que existe un fichero "datos.txt2, en el que cada registro del fichero es la componente de un vector(es decir, cada componente del vector en una línea), y me piden que guarde esas componentes en v[n], habiendo pedido antes al usuarios que introduzca la dimensión n. A mi...se me ocurre una cosa así, pero...es que...el tema de trabajar con ficheros lo llevo muy mal, a ver si alguien me dice si es correcto, y sino, como sería(por fi, sin complicarlo mucho que aun soy novatilla con C):
#include<stdio.h>
void main()
{
int n, v[n];
printf("introduce la dimensión del vector\n");
scanf("%d", &n);
v=fopen("datos.txt", "r");
}
Ummm, seguro que esto no tiene ningun sentido, no?

BuHo:
Pues no, la verdad es que mucho sentido no tiene, porque fopen() te devuelve un stream, no lo que tu quieras, en este caso, un entero.

Mas o menos, deberias:

Abrir el fichero para lectura.
Iterar sobre el fichero para que cuando llegue a N, pare.
Dentro de cada iteracion, coger la linea con alguna funcion de lectura de ficheros y guardarla en la posicion correspondiente del vector. Se me ocurre que uses fgets(), que lee linea a linea o hasta que encuentre un EOF y guarda lo que lee en un buffer.

La cabecera de la funcion es:

char *fgets(char *s, int tam, FILE *flujo);

Y la especificacion de la funcion segun el manual de linux es:



--- Citar ---fgets() lee como mucho uno menos de tam  caracteres  del  flujo  y  los
       guarda  en  el búfer al que apunte s.  La lectura se para tras un EOF o
       una nueva-línea. Si se lee una nueva-línea, se guarda en el búfer. Tras
       el último carácter en el búfer se guarda un ’\0’
--- Fin de la cita ---



Cerrar el fichero.
Salir.

Dificil dificil, no es mucho...

Zahira:
Ok, muchas gracias, ya sabia yo que tanta sensillez....
Cuando tenga un momento lo intento y si me quedan dudas ya me pasaré a preguntar, que será lo más seguro porque...ando un poco perdida
Gracias y saludos

Navegación

[0] Índice de Mensajes

Ir a la versión completa