URL: https://www.overclockers.at/coding-stuff/c_return_zeiger_204643/page_2 - zur Vollversion wechseln!
ich würd das buch nehmen und verbrennen...
das mit MAX-1 war mein fehler, die fputs funktion macht das eh für dich..
das ganze konstrukt kann doch nur funktioniern, wenn zwischendurch am stack ned herumgeschrieben wird... und das ist, gelinde gesagt, einfach wahnsinn.
entweder bin ich komplett daneben oder das buch ist mist..
Wenn das Beispiel so 1 : 1 aus dem Buch ist, schmeiss das Buch weg - bin da mit semteX einer Meinung
@lama: bist sicher dass das nicht ein negativbeispiel ist?
guter Rat - das Buch werde ich wegschmeißen und es mit der 2. Auflage versuchen; dort sieht das Kapitel anders aus.
Zitat von semteXreturn( 0 );
So kriegst das Beispiel aus dem komischen Buch ohne Warnings gecodet:
Code:#include <stdio.h> #include <string.h> #define MAX 255 int eingabe(char* output, char* input) { printf("Bitte \"%s\" eingeben: ", output); if (fgets(input, MAX, stdin) == NULL) return -1; // FEHLER return 0; // KEIN FEHLER } int main() { char text[MAX]; int result = 0; result = eingabe("Vorname", text); printf("Hallo %s\n", text); result = eingabe("Nachnamename", text); printf("%s, interessanter Nachname\n", text); return 0; }
Zitat von Timmää@lama: bist sicher dass das nicht ein negativbeispiel ist?
ZitatOder sind Sie gar nicht daran interessiert, das Newline-Zeichen zu entfernen? Dann könnte die Funktion auch so aussehen:
char *eingabe(char *str)
{
char input[MAX];
char *ptr=input;
printf("Bitte \"%s\" eingeben: ",str);
fgets(input, MAX, stdin);
return ptr;
}
Code:char *string = "Hallo Welt"; printf("Anfangsadresse auf die *string zeigt = %p\n",*string);
sondernZitat...%p\n", *string);
heißen sollte?Zitat...%p\n", string);
müssts nicht &string sein, wenn du die adresse ausgeben willst?
Ja, es sollte nur string heißen. Ein C String ist ja ein einfacher Array aus chars und wenn man einen Arraynamen angibt bekommt man den Pointer auf das erste Element zurück. Also gibt *string den ersten Buchstaben aus der bei deiner Ausgabe irgendwie in eine Adresse umgewandelt wird...
Zitat von lama007Code:char *string = "Hallo Welt"; printf("Anfangsadresse auf die *string zeigt = %p\n",*string);
Wenn das so nicht stimmt, dann ist auch die zweite Auflage nicht ohne Fehler.

ich wusste ja, dass da noch was schief aussiehtZitat von thatDein Code ist zwar prinzipiell korrekt, aber return ist keine Funktion, deshalb kannst du dir die Klammern sparen und einfach return 0; schreiben.

ist es das buch?
http://www.amazon.de/von-bis-umfass...0360&sr=8-1
Dann hat die Rezessionen wohl der Autor selbst geschrieben 
Zitat von lama007"gcc --version" gibt bei mir das aus:
"gcc (SUSE Linux) 4.3.2 [gcc-4_3-branch revision 141291]"
...

am besten mit den optionen
-Wall -pedantic -ansi 
[edit] Aber im Prinzip tuts -Wall auch 
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026