[C con Clase] Pasar datos de un archivo a un vector

Pablo Brunet cirujatuc79 en gmail.com
Vie Mar 20 06:05:27 CET 2009


tampoco me cierra por que aca no me muestra nada si es totalmente logico lo
que estoy poniendo:
 i=0;
 while (!feof(m)){
       fread(&v[i],sizeof(v[i]),1,m);
       cout<<v[i].nombre;
       i++;  }

tendría que mostrar los nombres en ese caso. o no?

El 20 de marzo de 2009 0:04, Pablo Brunet <cirujatuc79 en gmail.com> escribió:

> ahora si que me perdi....:( pero lo analizare
>
> El 19 de marzo de 2009 23:56, Steven Davidson <srd4121 en njit.edu> escribió:
>
> Hola Pablo,
>>
>> Pablo Brunet wrote:
>>
>>> sigo con problemas :(, ahora no me muestra nada, solo presione una
>>> tecla para continuar..., el archivo posee 2 registros en este orden:
>>>
>>> TUCUMAN    JUAN    31
>>> SALTA       PABLO    29
>>> # include <stdio.h>
>>> # include <stdlib.h>
>>> # include <iostream>
>>>
>>> using namespace std;
>>>
>>>
>>> typedef struct p {
>>>       char nombre[20];
>>>       int edad;
>>>       char provincia[30];};
>>>        FILE * m;        int i=0;
>>> p v[100];
>>>
>>> int main()
>>> {
>>>  m=fopen("pablo.txt","rb");
>>>
>>
>> Esto es un problema, porque indicas que el fichero está en modo binario,
>> cuando se trata de un fichero en modo texto. Elimina la letra 'b' de la
>> segunda cadena.
>>
>>   fseek(m,0,0);
>>>  fread(&v,sizeof(v),1,m);
>>>
>>
>> Como cada registro tiene diferentes tipos: cadenas y enteros, entonces no
>> deberías leer toda la información de golpe. Tienes que procesar cada línea
>> de texto en el fichero. En la práctica, usa 'fscanf()'. Básicamente, estás
>> leyendo y convirtiendo, si hace falta, las cadenas de caracteres al tipo que
>> quieres. Esto es prácticamente leer la información desde el teclado con
>> 'scanf()', pero en su lugar lo hacemos desde un fichero.
>>
>> Nota: La verdad es que la implementación de 'scanf()' invoca 'fscanf()'.
>>
>>   i=1;
>>>  while (!feof(m)){
>>>       cout<<endl<<"  "<<v[i].provincia<<"  "<<v[i].nombre<<"
>>>  "<<v[i].edad<<endl;       fread(&v[i],sizeof(v[1]),1,m);
>>>
>>
>> Aquí haríamos lo mismo.
>>
>>        i++;}
>>>  fclose(m);
>>>
>>>  system("PAUSE");
>>> }
>>>
>>>
>>
>>
>> Espero que esto te ayude
>>
>>
>> Steven
>>
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090320/c1c58de6/attachment.html>


Más información sobre la lista de distribución Cconclase