Ich versuche, eine Datei mit fgets zu lesen und es mit strtok zu token, aber irgendwie verliere ich den letzten Buchstaben des ersten Tokens (Titel). Ich habe versucht, für eine Weile, das zu beheben, aber es scheint nicht zu tun, dass jede Hilfe geschätzt wird. Ich habe zwar ein Char vor dem Trennzeichen hinzugefügt, aber ich bin mir nicht sicher, wie ich das implementieren soll.Strtok löscht das letzte Zeichen vor dem Delimiter
char line[201];
char *title;
int year;
char *age;
char *genre;
int lenght;
float rating;
while ((fgets(line,sizeof(line),fp)) != NULL){
strtok(line,"\"");
title = line;
year = atoi(strtok(NULL,","));
age = strtok(NULL,",");
memmove(age, age+1, strlen(age));
genre = strtok(NULL,",");
memmove(genre, genre+1, strlen(genre));
lenght = atoi(strtok(NULL,","));
rating = atof(strtok(NULL,","));
x = new_film(title,year,age,genre,lenght,rating);
Insert(root, x);
}
Dateidaten wie folgt aussehen:
"Zwei glorreiche Halunken", 1966, "Approved", "West", 161,8.9 "Memento", 2000, R " “, "Mystery/Thriller", 113,8.5
Ausgabe sieht wie folgt aus:
der Gute, der Böse und der Ugl, 1966, GENEHMIGT, Western, 161,8.9
Kann nicht aus dem angezeigten Code reproduzieren (obwohl es in einigen unerwünschten '' 'Marken). Es muss in dem Code sein, den Sie nicht angezeigt haben. Zum Beispiel bekomme ich "Das Gute, das Schlechte und das Hässliche", also meine Vermutung ist, dass eine dieser Funktionen versucht, die Zitate zu entfernen, die bereits entfernt wurden. –
Ihre Verwendung von 'strtok' ist schrecklich - Sie überprüfe nie seinen Rückgabewert, und du ignorierst seinen ersten Rückgabewert - deshalb beginnen deine Titel mit "". Und die ganze fiese Saite, die sich verschiebt? –
'strtok (line," \ ""); titel = zeile; '->' title = strtok (zeile, "\" ";' – BLUEPIXY