Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : struct als Rückgabewert, was bei Fehler?



qeldroma
05-04-2004, 10:20
Ich habe eine Function die als Rückgabewert eine struct gibt. Nun möchte ich bei einem Fehler reagieren, jedoch funktioniert "return NULL" oder "return 0" nicht, der Compiler meckert, das die Typen nicht passen würden.

Folgend der Code:
struct id3tag getTag(char *filename){
FILE *fp;
int count=0;
struct id3tag test;

if((fp = fopen( filename, "rb"))== NULL){
printf("Error while reading!\n");
return NULL;
}else{
.......
}
return test;
}

Und hier die Fehlermeldung:
/home/qeldroma/Dokumente/DEVELOPMENT/C/id3tree/src/id3tree.c: In function `getTag':
*/home/qeldroma/Dokumente/DEVELOPMENT/C/id3tree/src/id3tree.c:56: error: incompatible types in return
*gmake[2]: *** [id3tree.o] Error 1


Wie mache ich's richtig?

wraith
05-04-2004, 10:45
Eine Möglichkeit, und es spart das kopieren des structs


int getTag(const char *filename,struct id3tag *pIdTag)
{
/*
Füllen des structs pIdTag
if Error
return 0;
*/

return 1;
}

Der Aufrufer übergibt dann die Adresse eines structs


struct id3tag tag;

if(!getTag("dateiname",&tag))
printf("Error\n");

axeljaeger
05-04-2004, 10:51
Man kann nur 0 zurückgeben, wenn man einen Pointer auf eine Struktur zurückgibt.

qeldroma
05-04-2004, 11:14
Danke ;)