Hallo Leute.
Ich programmiere nun schon seit einer Weile C und lesen parallel dazu das Buch C von A bis Z von Jürgen Wolf. Jedoch bin ich vor ein paar Tagen auf ein merkwürdiges Phänomen gestoßen:
Ich habe folgenden Quelltext aus dem Buch kompiliert:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
/* ptr13.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 255
char *eingabe(char *str) {
char input[MAX];
printf("Bitte "%s" eingeben: ",str);
fgets(input, MAX, stdin);
return strtok(input, "\n");
}
int main(void) {
char *ptr;
ptr = eingabe("Vorname");
printf("Hallo %s\n", ptr);
ptr = eingabe("Nachname");
printf("%s, interssanter Nachname\n", ptr);
return EXIT_SUCCESS;
}
|
Beim Ausführen Jeodch kommt folgendes:
|
Quellcode
|
1
2
3
4
|
Bitte "Vorname" eingeben: Foo
Hallo 0@
Bitte "Nachname" eingeben: Bar
0@, interessanter Nachname
|
Ich habe es mit dem gcc in der Version 4.4.3-r2 und 4.4.4-r2 unter Gentoo x86_64 versucht. In beiden Fällen kam ich zu dem gleichen Ergebnis.
Unter Ubuntu 10.10 i686 (besitze leider nicht die x86_64 Version) mit gcc in der Version 4.4.5 funktioniert das Programm jedoch reibungslos.
Ist es ein Bug? Oder wie kann ich das Problem beheben?
Ich habe auch schon versucht den gcc und die glibc neu kompiliert, jedoch leider ohne Erfolg.
Jedoch funktionierte eine unter Ubuntu kompilierte Version unter Gentoo.
EDIT:
Vielleicht könnte ja jemand mal den Quellcode bei sich ausprobieren und sagen, ob er das gleiche Problem hat.