Leer un archivo de texto con fscanf y ponerlo en un arreglo de float.

Iniciado por fafafa01, 17 Mayo 2016, 06:34 AM

0 Miembros y 1 Visitante están viendo este tema.

fafafa01

Buenas, hice un código que pretende leer de un archivo de texto con scanf las primeras 20 lineas y ponerlo en un arreglo, la cosa es que no funciona.

mi código:


#include <stdio.h>

void copiar(float arreglo[], int cantidad);

void main (void) {
float datalog[200];
int i=0;
copiar(datalog,20);
while (i<=20) {
printf(" %f \n",datalog[i]);
i++;
}
}

void copiar(float arreglo[],int cantidad) {
int i=0;
FILE *archivo;
archivo=fopen("datalog2","r");
if( archivo )
     printf( "existe (ABIERTO)\n" );
  else {
     printf( "Error (NO ABIERTO)\n" );
}
while (i<=cantidad){
fscanf(archivo," %f ",arreglo);
i++;
}
fclose(archivo);
}


¿hay algo mal en la sintaxis? (el archivo no aparece como .txt ni como .dat ni nada, asique le puse solo el nombre)

saludos.

class_OpenGL

La cosa es que si copias lo del archivo siempre a la misma dirección de memoria, no hacemos nada.

Tendrías que cambiar
fscanf(archivo," %f ",arreglo);
por
fscanf(archivo," %f ",&arreglo[i]);

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

fafafa01

gracias funciono, una pregunta, mi profesor me había dicho que en un arreglo era lo mismo esto que esto:

arreglo[0] <--> &(arreglo[0])

¿es verdad?

ivancea96

Cita de: fafafa01 en 17 Mayo 2016, 15:25 PM
gracias funciono, una pregunta, mi profesor me había dicho que en un arreglo era lo mismo esto que esto:

arreglo[0] <--> &(arreglo[0])

¿es verdad?

arreglo == &(arreglo[0])

Eso sí. Lo otro, pues no, salvo que se refiriese a otra cosa. arreglo[0] es el elemento 0. &arreglo[0] es la dirección del elemento 0, osea, el valor de 'arreglo'.

AlbertoBSD

#4
Cita de: ivancea96 en 17 Mayo 2016, 15:27 PM
arreglo == &(arreglo[0])

Eso sí. Lo otro, pues no, salvo que se refiriese a otra cosa. arreglo[0] es el elemento 0. &arreglo[0] es la dirección del elemento 0, osea, el valor de 'arreglo'.

Para el caso especifico del 0 es valido.

Para casos generalizados
arreglo[i]

es el valor del arreglo en ese indice

&arreglo[i]

es la direccion en memoria de ese indice

saludos.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW