B
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct mp3define{
char *dateiname;
char *id3tag;
struct mp3define *next;
};
void mp3add(struct mp3define *mp3liste,char name[],char titel[]);
void mp3read(struct mp3define *mp3liste);
int main (void)
{
struct mp3define *mp3start;
mp3start=(struct mp3define*)malloc(sizeof(struct mp3define));
mp3start->next=NULL;
mp3add(mp3start,"dateiname1","beispieltitel1");
mp3add(mp3start,"dateiname2","beispieltitel2");
mp3read(mp3start);
return 1;
}
void mp3add(struct mp3define *mp3liste,char name[],char titel[])
{
struct mp3define *neu;
struct mp3define *tempa;
tempa=mp3liste;
/* Neues Element erstellen */
neu =(struct mp3define*)malloc(sizeof(struct mp3define));
neu->next=NULL;
neu->dateiname=(char*) malloc(strlen(name)+1);
strcpy(neu->dateiname,name);
neu->id3tag=(char*) malloc(strlen(titel)+1);
strcpy(neu->id3tag,titel);
if(mp3liste->next==NULL)
{
mp3liste->next=neu;
}
else
{
/* Letztes Element suchen und neues Anhängen */
while(tempa->next!=NULL)
{
tempa=tempa->next;
}
tempa->next=neu;
}
}
void mp3read(struct mp3define *mp3liste)
{
struct mp3define *temp;
temp=mp3liste;
if(temp->next!=NULL)
{
do
{
/* Da du das erste Element nicht nutzt, musst du das erste Überspringen */
temp=temp->next;
printf("Dateiname: %s\n",temp->dateiname);
printf("ID3Tag: %s\n",temp->id3tag);
}while(temp->next!=NULL);
}
}
So sollte es funktionieren. Schau es dir mal an und wenn du noch Fragen, hast einfach posten.
Du solltest übrigends den allozierten Speicher wieder löschen, wenn du ihn nicht mehr brauchst. Auch bevor das Programm beendet wird.
mfg bauerb