CSV einlesen

10/27/2016 15:00 Mösi#1
Hey Com!

Code:
int main()
{

	float data[6515][7] = { 0 };
	FILE *CSV;
	int d, m, y;
	float Date, Open, High, Low, Close, Volume, Adj_Close;
	CSV = fopen("dax.csv", "r");
	int counter = 0;
	if (CSV) {
		while ((fscanf_s(CSV, "%d-%d-%d,%f,%f,%f,%f,%f,%f\n", &y, &m, &d, &Open, &High, &Low, &Close, &Volume, &Adj_Close)) != EOF)
		{
			data[counter][0] = (float)calcSeconds(y, m, d); 
			data[counter][1] = Open; 
			data[counter][2] = High;
			data[counter][3] = Low; 
			data[counter][4] = Close; 
			data[counter][5] = Volume; 
			data[counter][6] = Adj_Close; 
			counter++;
		}
	}
	const int rowCount = counter;
	print_data(rowCount, data);
	getchar();
	return 0;
}
jede einzelne data[counter][x] Zeile wirft zuerst eine writing access violation und danach mehrere reading access violations ..
da es ein dynamisches array ist, muss ich (meines wissens nach) malloc() verwenden, doch wie genau wende ich das hier an? :o

danke im voraus
10/27/2016 15:36 .Scy#2
durch

Code:
float data[6515][7] = { 0 };
ist es kein dynamisches array also kein malloc notwendig.

wichtig zu wissen wäre der inhalt der datei und zudem eine abfrage ob counter kleiner 6515 ist, damit du definitiv im array bist und nicht aus dem array läufst.

ich bin mir nicht sicher wie fscanf_s funktioniert, daher kann es sein, dass es an der funktion liegt und nicht an deinem code, soweit sieht es nämlich ok aus.
10/27/2016 15:59 Mösi#3
oh wow, dass hätte ich beinahe übersehen, jetzt weiß ich wieder warum ich das array bis jetzt statisch gelassen habe ..

die csv besteht aus zeilen wie dieser
2016-08-17,10694.549805,10696.759766,10516.049805,10537.66 9922,66557600,10537.669922

mit der counterabfrage ist es zwar ausführbar, jedoch bleibt die konsole leer (es sollte mit print_data zu testzwecken alles auf die konsole ausgegeben werden)

danke schonmal!

edit: danke dir scy, aber mein kollege hat die erste zeile der csv beim testen gelöscht (war quasi spaltenbeschriftung, die hab ich noch in der datei gehabt ..)
jetz gehts ^^
10/27/2016 20:17 .Scy#4
Quote:
Originally Posted by Mösi View Post
oh wow, dass hätte ich beinahe übersehen, jetzt weiß ich wieder warum ich das array bis jetzt statisch gelassen habe ..

die csv besteht aus zeilen wie dieser
2016-08-17,10694.549805,10696.759766,10516.049805,10537.66 9922,66557600,10537.669922

mit der counterabfrage ist es zwar ausführbar, jedoch bleibt die konsole leer (es sollte mit print_data zu testzwecken alles auf die konsole ausgegeben werden)

danke schonmal!

edit: danke dir scy, aber mein kollege hat die erste zeile der csv beim testen gelöscht (war quasi spaltenbeschriftung, die hab ich noch in der datei gehabt ..)
jetz gehts ^^
einfach thanks drücken :P

da problem gelöst werde ich mal einen closerequest starten.
10/28/2016 16:56 Devsome#5
#closed da gelöst