struktur in array
-
Hallo
ich habe eine Datei in der Artikel drin sind,mit artikelnummer, bezeichnung, größe, farbe und preis. Das alles will ich in ein Array einlesen, gelingt mir aber nicht so recht.#include<stdio.h> #include<stdlib.h> struct artikel { int artnr[5]; char bez[8]; int gro[2]; int farb[1]; double preis; } art[10]; int main(){ int i; FILE *datei; datei=fopen("D:\\artikel.txt","r"); if (datei != NULL){ for (i=0;i<10;i++) fscanf(datei,"%d\t%s\t%d\t%d\t%d\t%f.2\n",&art[i].artnr,&art[i].bez,&art[i].gro, &art[i].farb,&art[i].preis); } else printf("Datei konnte nicht geöffnet werden"); printf("%d\n",i); system("Pause"); return 0; }
So funktionierts nicht. Was mach ich falsch?
-
Bist du denn sicher, daß die int-Array in der Struktur Sinn machen? (oder anders: Hat ein Artikel wirklich fünf verschiedene Artikelnummern?)
-
Oh ha! Also sollte eigentlich so werden das die ints aus max [..] zeichen bestehen!
-
Sowas gibt es in C aber nicht - wenn du den Wertebereich einschränken willst, mußt du das schon selber erledigen, indem du die Eingaben auswertest und auf Fehler reagierst.
-
Naja ist ja erstmal zweitens. Warum bekomm ich denn die Werte nicht eingelesen?
-
weil du den Rückgabewert von fscanf nicht auswertest
weil du den Formatstring von fscanf nicht beherrscht und falsch angegeben hast
weil fscanf nichts für Anfänger ist
weil man in solcherlei Fällen eine Textdatei zeilenweise als String einliest und den dann auswertet
-
Da waren einige Ungereimtheiten in deinem Format-String (ein %d zu viel und die Angabe für den double ist auch nicht korrekt) und bei der Übergabe des char-Arrays brauchst du keinen Adress-Oberator, aber ansonsten sollte es eigentlich funktionieren: http://ideone.com/CfoF9