Ich bin ein ziemlich interessantes Problem in C gegenüber So habe ich eine Struktur, die wie folgt aussieht:Array von Strukturen - C falscher Wert
struct Question {
int year;
char* month;
char* day;
char* hour;
char* minute;
char* second;
char* question;
int answerCount;
char* answers[1024];
} questions[100];
Dort habe ich eine Reihe von Frage structs Initialisierung genannt Fragen, mit der Größe von 100
Deshalb möchte ich dieses Array aus einer Datei wie folgt aussehen füllen:
2017 04 01 12 38 00 OK? 2 NO NO
2017 04 01 14 15 00 WHAT? 4 YES YES YES YES
die Struktur: Jahr Monat Tag Stunde Minute Sekunde Frage beantwortet Answer
Ich bin der Verarbeitung der Datei wie folgt aus:
...
int id = 0;
int j;
char line[2048];
while ((fgets(line, sizeof(line), fp)) != NULL) {
char* p = strtok(line, " ");
char* tokens[1024];
char* token;
int i = 0;
int counter = 0;
while((p != NULL)) {
switch(counter) {
case 0: questions[id].year = atoi(p); break; // year
case 1: questions[id].month = p; break; // month
case 2: questions[id].day = p; break; // day
case 3: questions[id].hour =p; break; // hour
case 4: questions[id].minute = p; break; // minute
case 5: questions[id].second = p; break; // seconds
case 6: questions[id].question = p; break; // question
case 7:
questions[id].answerCount = atoi(p);
int qcount = atoi(p);
int k;
int l = j;
//printf("count : %d", qcount);
for (k = 0; k < qcount; ++k) {
p = strtok(NULL, " ");
++l;
questions[id].answers[k] = p;
}
break;
default: break;
}
p = strtok(NULL, " ");
++counter;
}
++id;
}
fclose(fp);
...
Danach, wenn ich die Fragen [0] .question Element in der while-Schleife printf, ich bekommen, aber wenn ich drucken "OK?" das gleiche nach der While-Schleife, bekomme ich "WAS?".
Ich habe viel Zeit damit verbracht nachzudenken, was ich falsch machen könnte, aber keinen Erfolg.
Danke für Ihre Hilfe.
Sie erwarten also die Zeichenfolge "OK?" irgendwo für späteres Drucken gespeichert werden. Woher? –
Gut in Fragen [0]. Frage. Ich mache diese Zuordnung hier: questions [id] .question = p; – Corner
Fragen [0] .Frage ist ein Zeiger. Es kann keine Zeichenfolge speichern, sondern nur auf eine anderweitig gespeicherte Zeichenfolge. –