ich ein Datenformat wie das folgende haben:fscanf Formatbezeichner in structs
22/March/2014
137 8
15 16 34 8 18
17/November/2014
106 8
22 29 30 9 6
20/November/2014
169 10
50 58 38 29 1
Ich versuche, sie in die folgende Struktur zu verwenden fscanf, um den Inhalt der Datei zu erhalten und Ort:
struct date{
//This is storing the date dd/month/yyyy.
char* fullDate;
// Number of foot and wheelchair passengers.
int foot;
int wheelchair;
//number of infant, child, adult, senior and family tickets sold
int infant;
int child;
int adult;
int senior;
int family;
};
Also habe ich versucht, die folgenden:
struct date r[50];
FILE* der = fopen("C:\\Users\\Def\\Downloads\\annual_sales_data_2014.txt","r");
int i = 0;
rewind(der);
fscanf(der, "%s", r[i].fullDate);
fscanf(der, "%d %d ", &r[i].foot, &r[i].wheelchair);
fscanf(der, "%d %d %d %d",&r[i].infant, &r[i].child, &r[i].adult, &r[i].senior, &r[i].family);
printf("%s\n%d %d\n%d %d %d %d %d\n\n", r[i].fullDate, r[i].foot, r[i].wheelchair, r[i].infant, r[i].child, r[i].adult, r[i].senior, r[i].family);
fclose(der);
Aber ich glaube, dass fscanf nicht richtig benutzt wird und ich bin ein immer Etwas verwirrt von der Dokumentation für Formatbezeichner, habe ich es auch so probiert.
fscanf(der, "%s/%s/%s\n%d %d\n%d %d %d %d %d\n", r[i].day, r[i].month, , r[i].year, &r[i].foot, &r[i].wheelchair, &r[i].infant, &r[i].child, &r[i].adult, &r[i].senior, &r[i].family);
Im obigen Beispiel auch die Struktur i Verpflegung 3 Zeichen zu akzeptieren * 's für den Tag Monat und Jahr. am Anfang der Formatbezeichner Zeichenfolge. Das hat auch nicht funktioniert, also habe ich es auf ein kleineres Format heruntergebrochen, um zu sehen, ob ich das Problem diagnostizieren könnte.
Selbst im aufgeschlüsselt Beispiel dieses
fscanf(der, "%s", r[i].fullDate);
sogar bricht dies im Debugger und kippe Arbeit heraus, warum.
Danke.
Wenn 'Sie in eine Variable fscanf', sollten Sie geben es ist Adresse. –
'r [i] .fullDate' zeigt nicht auf einen bestimmten Speicherpuffer, der Daten empfangen kann, aber Sie übergeben seinen undefinierten Wert als evangelium an' fscanf' für die Population. Ihr Code ruft undefiniertes Verhalten auf. – WhozCraig
Beim ersten Versuch benötigt das letzte 'scanf()' noch ein '% d'. Ansonsten sollte es funktionieren, außer dass Sie zuerst Speicher für das 'fullDate'-Member jeder Struktur zuweisen müssen (und eine '% s'-Angabe hinzufügen sollten, um Überläufe zu vermeiden). – Dmitri