im buch 'C von A bis Z' steht folgendes geschrieben:
---------------------------------------------
| 1 | #include <stdio.h>
 | 
| 2 | #include <stdlib.h>
 | 
| 3 | #include <string.h>
 | 
| 4 | #define MAX 255
 | 
| 5 | char *eingabe(char *str) {
 | 
| 6 |    char input[MAX];
 | 
| 7 |    printf("Bitte \"%s\" eingeben: ",str);
 | 
| 8 |    fgets(input, MAX, stdin);
 | 
| 9 |    return strtok(input, "\n");
 | 
| 10 | }
 | 
| 11 | int main(void) {
 | 
| 12 |    char *ptr;
 | 
| 13 |    ptr = eingabe("Vorname");
 | 
| 14 |    printf("Hallo %s\n", ptr);
 | 
| 15 |    ptr = eingabe("Nachname");
 | 
| 16 |    printf("%s, interssanter Nachname\n", ptr);
 | 
| 17 |    return EXIT_SUCCESS;
 | 
| 18 | }
 | 
Der Funktion eingabe() wird hierbei als Argument die Adresse eines 
Strings übergeben. In der Funktion werden Sie aufgefordert, einen Namen 
einzugeben. Die Anfangsadresse des Strings geben Sie mit folgender Zeile 
zurück:
| 1 | return strtok(input, "\n");
 | 
Die Funktion strtok() liefert ja selbst als Rückgabewert einen 
char-Zeiger zurück. Da die Funktion fgets() beim Einlesen von der 
Standardeingabe das Newline-Zeichen mit einliest, haben Sie hierbei 
gleich zwei Fliegen mit einer Klappe geschlagen. Das Newline-Zeichen 
wird mit strtok() entfernt, und die Funktion liefert auch gleich die 
Anfangsadresse des Strings input als Rückgabewert zurück, welchen Sie 
gleich mit return weiterverwenden. Doch Vorsicht, Folgendes funktioniert 
nicht:
| 1 | char *eingabe(char *str) {
 | 
| 2 |    char input[MAX];
 | 
| 3 |    printf("Bitte \"%s\" eingeben: ", str);
 | 
| 4 |    fgets(input, MAX, stdin);
 | 
| 5 |    return input;
 | 
| 6 | }
 | 
Normalerweise sollte hier der Compiler schon meckern, dass etwas nicht 
stimmt. Spätestens aber, wenn Sie das Beispiel ausführen, werden Sie 
feststellen, dass anstatt des Strings, den Sie in der Funktion eingabe() 
eingegeben haben, nur Datenmüll ausgegeben wird.
---------------------------------------------
die strtok funktion liefert ja auch nur einen pointer auf den 
übergebenen string , dh. der test mittels return strtok(input, "\n"); 
sollte auch nur datenmüll liefern ?