Ven algo raro en este codigo basico con structs? en C

Iniciado por palacio29, 11 Septiembre 2016, 22:23 PM

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

palacio29

Hola

Tengo que hacer un programa en el cual a partir de un archivo .csv que se encuentra en mi escritorio, lo que tengo que hacer es leerlo y guardarlo en un arreglo. Este arreglo es un tipo de dato creado por mi (struct)
El tema es que cuando ejecuto el programa no sale nada, no tira error, simplemente queda la consola en negro.
En el archivo .csv estan los datos de 10 puntos (x e y).

#include <stdio.h>
#include <stdlib.h>

struct punto
{
    int x;
    int y;

};
typedef struct punto tipoPunto;

void LECTURA (tipoPunto arreglo[10]);

int main()
{
    tipoPunto arreglo[10];
    LECTURA(arreglo);

    return 0;
}
void LECTURA (tipoPunto arreglo[10])
{
    FILE*arch;
    int i=0,j=0;
    arch=fopen("C:\\Users\\Pablo-PC\\Desktop\\puntos.csv","r");
    while (!feof(arch))
    {
        fscanf(arch,"%d,%d\n",&arreglo[i].x,&arreglo[i].y);
        i++;
    }
    fclose(arch);

        for (j=0;j<10;j++)
    {
        printf ("Punto %d = %d - %d",i,arreglo[j].x,arreglo[j].y);
    }

}

class_OpenGL

He ejecutado el código y funciona perfectamente. Este tema ya ha salido en este foro. Probablemente sea porque el antivirus, al ver que usas archivos, por alguna razón, te bloquea la aplicación hasta que se asegure que es segura. Para probar esta teoría, desconecta el antivirus, ejecuta la aplicación y mira si sigue pasando lo mismo. Si la aplicación se ejecuta bien después de desactivar el antivirus, simplemente actívalo de nuevo, ejecuta la aplicación y espera a que el antivirus determine que la aplicación es segura.

P.D.: Una cosilla, en mi opinión, es mejor que uses rutas locales en vez de globales, pero eso es cuestión de gustos y necesidades :D

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

BloodSharp

#2
Ahí te lo arreglé, no verificaste si el archivo estaba bien abierto y el for se iba de rango probablemente:

int main()
{
tipoPunto arreglo[10];
LECTURA(arreglo,sizeof(arreglo)/sizeof(tipoPunto));
return 0;
}

void LECTURA(tipoPunto*arreglo,int tamanio)
{
FILE*arch;
int i=0,j=0;
arch=fopen("puntos.csv","r");
if(arch)
{
while(!feof(arch))
{
fscanf(arch,"%d,%d\n",&arreglo[i].x,&arreglo[i].y);
i++;
}
fclose(arch);
}
for(j=0;(j<i)&&(j<tamanio);j++)
{
printf("Punto %d = %d - %d\n",j+1,arreglo[j].x,arreglo[j].y);
}
}



B#



ivancea96

¿Tienes el csv con este formato?
8,95
5,62
10,4
0,0
8,95
5,62
10,4
0,0
8,95
5,62


Sin comas tras la Y, vamos. Por lo demás, es correcto.

palacio29

Hola

Gracias a todos, el problema era el archivo csv que lo habia hecho en celdas separadas en excel, al final iba cada punto en una unica celda separada por comas.