Ich versuche, einen Struct-Song zu meinem Struct-Pointer-Song * hinzuzufügen, aber wenn ich versuche, es in eine Datei zu schreiben, gibt es einfach Junk aus. Dies ist meine Funktion:C - Hinzufügen eines Elements zu einem Struct-Zeiger
void addSong(Song *song, char songName[], char artistName[], int publicationYear, int *nrOfSongs)
{
Song *tempSongs = (Song*)malloc(sizeof(Song)*(*nrOfSongs));
for (int i = 0; i < (*nrOfSongs); i++)
{
strcpy(tempSongs[i].artistName, song[i].artistName);
strcpy(tempSongs[i].songName, song[i].songName);
tempSongs[i].publicationYear = song[i].publicationYear;
}
free(song);
*nrOfSongs = (*nrOfSongs) + 1;
song = (Song*)malloc(sizeof(Song)*(*nrOfSongs));
for (int i = 0; i < ((*nrOfSongs)-1); i++)
{
strcpy(song[i].artistName, tempSongs[i].artistName);
strcpy(song[i].songName, tempSongs[i].songName);
song[i].publicationYear = tempSongs[i].publicationYear;
}
}
Edit 1: Sorry für die schlechte Frage.
Meine Funktion writeToFile:
void writeToFile(char fileName[], Song *song, int *nrOfSongs)
{
char name[256];
snprintf(name, sizeof(name), "%s.txt", fileName);
FILE * file = fopen(name, "w");
fprintf(file, "%d", *nrOfSongs);
fputc('\n', file);
for (int i = 0; i < (*nrOfSongs); i++)
{
fputs(song[i].songName, file);
fputs(song[i].artistName, file);
fprintf(file, "%d", song[i].publicationYear);
fputc('\n', file);
}
fclose(file);
}
Ein Beispiel einer solchen Datei:
4
Mr Tambourine Man
Bob Dylan
1965
Dead Ringer for Love
Meat Loaf
1981
Euphoria
Loreen
2012
Love Me Now
John Legend
2016
Ich möchte ein Lied addieren und durch die ich will ein Künstlername, songname und Publication meiner Struktur hinzufügen Zeiger und schreiben Sie dann den Strukturzeiger auf eine neue Datei.
Es gibt keinen Grund, dass diese Funktion ungültig wird. Geben Sie stattdessen einen Zeiger auf die zugeordneten Strukturen zurück. – wildplasser
Der Großteil des wichtigen Teils fehlt. Sie zeigen nichts über das Schreiben in eine Datei. Wie nennst du deine Funktion? Wie schreibst du in eine Datei? Was erwartest du geschrieben zu werden? Was ist in der Datei? Wie überprüfen Sie, was geschrieben wurde? – Gerhardh
Benötigt mehr [mcve]. – melpomene