Problem mit Code (malloc)
-
Könnte mir Jemand vllt. das Problem bei meinem Code verraten. Es kommt nämlich nur zur Eingabe der Größe von "size" und gibt dann automatisch die restlichen printf´s aus ohne das die Eingabe für den String gemacht werden kann.
#include <stdio.h> #include <stdlib.h> int main () { int size; char *stingo; printf("\nBitte Geben Sie die Größe Ihres Strings ein: "); scanf("%d", &size); stingo = (char*) malloc(size * sizeof(char)); printf("Geben Sie nun Ihr Wort ein: "); fgets(stingo,size,stdin); printf("\n\nAusgabe: %s\n\n", stingo); return 0; }
-
// Bullshit von einem ahnungslosen Volldeppen.
-
könntest du mir das mal vllt mal anhand meines codes zeigen ? ich weiss grad nicht so genau was du meinst.
PS bin noch ein Anfänger in C
-
Swordfish schrieb:
Es heißt
int main(void)
, nichtint main()
.Da bist du übereifrig.
int main()
ist auch in C 100% ok.
-
hm. War das mal anders?
-
Swordfish schrieb:
hm. War das mal anders?
Nein. Und der Tipp mit dem abschließenden Leerzeichen in scanf ist auch ziemlich schlecht.
-
yay.
-
wäre super wenn man mir unter meinem Beitrag weiterhelfen könnte
-
Das NewLine-Zeichen (Enter) ist noch im Eingabepuffer und daher wird bei fgets() eine leere Zeile eingelesen.
-
wie kann ich dieses Problem lösen ?
-
Guckst du hier: https://www.c-plusplus.net/forum/p1146014#1146014
Und wenn wir schon dabei sind (irgendeiner wird es eh schreiben):
sizeof(char)
ist per Definition 1.
Die Multiplikation ist daher nicht nötig.Der Erfolg von
malloc
sollte auch geprüft werden.Und das
free
fehlt auch am Ende (auch wenn es nach demreturn
automatisch gemacht wird)
-
DirkB schrieb:
[...] (auch wenn es nach dem
return
automatisch gemacht wird)Ist das so standarddefiniert?
-
Fragensteller2 schrieb:
DirkB schrieb:
[...] (auch wenn es nach dem
return
automatisch gemacht wird)Ist das so standarddefiniert?
Nicht vom C-Standard. Aber von allerlei Betriebssystemen garantiert. Nichtsdestotrotz ist es eine gute Angewohnheit immer alle Ressourcen sauber frei zu geben, denn nicht alle (sowohl Betriebssysteme als auch Ressourcen) haben solche Garantien.