Chcę odczytać plik .csv i zapisać do struktury/wyświetlić na ekranie jego zawartość. Niestety niezbyt dobrze sobie z tym radzę. Jak na razie przez analogię do tego
http://www.elektroda.pl/rtvforum/topic1796604.html
skonstruowałęm takie coś:
#include <stdio.h>
#include <math.h>
# define M 500
int main()
{
struct sygnal
{
float poczatek;
float interwal;
float koniec;
float *tablica;
};
float x;
int i =0;
char znak;
int wiersz = 0;
struct sygnal pierwszy;
char FileName [M];
char wybor;
FILE *f;
printf("Podaj nazwe pliku (wraz z formatem): ");
scanf ("%s", FileName);
printf("Dane oddzielane przecinkiem czy srednikiem?\n, - ,\nco innego - ;\n");
scanf("%s",&wybor);
f=fopen(FileName,"r");
while((znak = getc(f)) != EOF)
{
if(znak == '\n')
++wiersz;
}
pierwszy.tablica = (float*)malloc(wiersz * sizeof(float));
for(i=0; i<=wiersz; i++)
{
fscanf(f,"%g ; %g \n", &x, &pierwszy.tablica[i]);
printf("x = %g\t y = %g\n",x, pierwszy.tablica[i]);
if(i==0)
x=pierwszy.poczatek;
if (i==wiersz)
x==pierwszy.koniec;
}
pierwszy.interwal =(float) (pierwszy.koniec - pierwszy.poczatek)/wiersz;
system("pause");
return 0;
};
Próbuję też z czymś takim, wiem że jestem blisko - niestety wszędzie 0 wychodzą:
#include <stdio.h>
#include <math.h>
# define M 500
#include <stdlib.h>
int main()
{
struct sygnal
{
float poczatek;
float interwal;
float koniec;
float *tablica;
float *x;
};
float x;
int obieg;
int i =0;
char znak;
int wiersz = 0;
struct sygnal pierwszy;
char FileName [M];
char wybor;
FILE *f;
printf("Podaj nazwe pliku (wraz z formatem): ");
scanf ("%s", FileName);
//printf("Dane oddzielane przecinkiem czy srednikiem?\n, - ,\nco innego - ;\n");
//scanf("%s",&wybor);
f=fopen(FileName,"r");
while((znak = getc(f)) != EOF)
{
if(znak == '\n')
++wiersz;
}
pierwszy.tablica = (float*)malloc(wiersz * sizeof(float));
pierwszy.x = (float*)malloc(wiersz * sizeof(float));
///////////////////////////////
//char slowo[100];
//float c;
//obieg=0;
//for(i = 0; i<=wiersz; i++ ;)
//{
// c=fscanf(f, "%s", slowo);
// float wartosc = atof(slowo);
// obieg++;
// if(obieg==1)
// pierwszy.x[i]=wartosc;
// printf("x = %g\t", pierwszy.x[i]);
// if(obieg==3)
// {
// pierwszy.tablica[i]=wartosc;
// printf("y = %g\n", pierwszy.tablica[i]);
// obieg=0;
// }
// if(i==0)
// x=pierwszy.poczatek;
// if (i==wiersz)
// x==pierwszy.koniec;
//
//}
//////////////////
char tab1[50], tab2[50];
for(i=0; i<=wiersz; i++)
{
fscanf(f,"%s ; %s\n", &tab1[i], &tab2[i]);
pierwszy.x[i]=atof(tab1);
pierwszy.tablica[i]=atof(tab2);
printf("x = %g\t y = %g\n",pierwszy.x[i], pierwszy.tablica[i]);
if(i==0)
x=pierwszy.poczatek;
if (i==wiersz)
x==pierwszy.koniec;
}
pierwszy.interwal =(float) (pierwszy.koniec - pierwszy.poczatek)/wiersz;
system("pause");
return 0;
};