Autor Tema: C (lenguajeC) Crear un vector dinámicamente al leer datos desde archivo malloc  (Leído 2292 veces)

AgustinG

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Hola, el código que tengo lo que debe hacer es lo siguiente: abrir un archivo de texto que contiene números y guardarlos en un vector, luego mostrar esos datos que guardamos en dicho vector! Lo que quería saber es como hacer para asignar los valores que tengo de la variable "i" al vector que anteriormente había reservado en memoria. Luego de eso tengo que mostrar cada uno de los valores del vector de la siguiente manera:

v[1]= (Numero guardado en el archivo de texto)
v[2]=(Numero guardado en el archivo de texto)
v[3]=(Numero guardado en el archivo de texto)
v[4]=(Numero guardado en el archivo de texto)
...
Acá pongo el código:

Código: [Seleccionar]
int main(int argc, char* argv[])
{ int n;
char enter=10;
int i;
int r;
char a=0;
char b;
char x[15];

//define un puntero al manejador de archivos
FILE *fp;


//solicitar apertura del archivo
fp = fopen("Numeros.txt", "r");
if (fp==NULL){

printf("El archivo no existe\n");
}
else {

//determinar el tamaño del vector
n=0;
i=0;
while(r= fread(&b, 1, 1,fp)){
if(b==enter){
if(n>0){
i++;
n=0;
}
}
else{
n++;
}
}
if(n>0){ i++;}

//creo el vector dinamicamente

int *v;
v = (int *)malloc(4*i);

printf("construi el vector de tamaño %d\n",i);


//es necesario reposicionar el puntero para leer de nuevo desde el principio
r= fseek(fp,0,SEEK_SET);
//leo el archivo caracter por caracter
n=0;
while(r= fread(&b, 1, 1,fp)){
if(b==enter){
if(n>0){
x[n]=0;
n=0;
printf("%s\n",x);
i= atoi(x);
printf("i vale%d\n",i);

}
}
else{
x[n]=b;
n++;
}
}
if(n>0){
x[n]=0;
printf("%s\n",x);

i= atoi(x);
printf("i vale%d\n",i);
}

//es necesario reposicionar el puntero para leer de nuevo desde el principio
r= fseek(fp,0,SEEK_SET);

n=0;
while(r= fread(&b, 1, 1,fp)){
if(b==enter){
if(n>0){
x[n]=0;
n=0;
i= atoi(x);

}
}
else{
x[n]=b;
n++;
}

}
if(n>0){
x[n]=0;
i= atoi(x);

//Asignar los valores al vector que reservamos

}

r= fclose(fp);

return 0;
}
« Última modificación: 15 de Abril 2017, 20:14 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2662
    • Ver Perfil
Buenas AgustinG en el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=82&Itemid=210 hay algunos ejemplos que quizás te sirvan en concreto he visto uno en la entrega CU00543F Final de archivo (eof y feof) con C. End Of File. Leer datos de un fichero hasta final. Ejemplo código

Salu2

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".