Warnung bei Turbo C
-
Ein herzliches Hallo an die c-plusplus Community(Ich bin neu hier)
Ich bekomme eine Warnung bei folgendem Programm:
#include <stdio.h>
int main()
{
char *name;
printf ("Geben Sie Ihren Vornamen ein: ");
scanf ("%s",name);
printf ("Ihr Vorname enthaelt %d Zeichen.",strlen(name));
}Die Warnung lautet:
Warning: Possible use of "name" before definition in function mainDabei wird die Stelle hinter dem Semicolon in der scanf Zeile markiert.
Natürlich funktioniert das Programm auch nicht.
Es erscheint nur ein Fenster mit dem Text: "Geben Sie Ihren Vornamen ein"Wenn ich das dann mache und Enter drücke verschwindet das ganze Fenster.
Es gibt auch noch eine zweite Warnung allerdings weiss ich nicht wie ich die lesen kann
-
Die Variable "name" wird nicht initialisiert, d.h. der Pointer zeigt irgendwo hin - vielleicht in einen geschützten Bereich oder ins ROM. Dieser Umstand wird vom Compiler erkannt (-> die Warnung). Wenn Du nun Deine Eingabe gemacht hast, schreibt scanf() die Eingabe nach "irgendwo", und produziert do einen Absturz.
ergänze:
name=(char*)malloc(100);
scanf ("%s",name);
-
Schreibe die scanf funktion so:
scanf ("%s",&name);
-
Ne, lieber nicht, damit änderst du sonst die Adresse, auf die name zeigt.
So wie es rlohdaen gezeigt hat, war es schon richtig.
-
sfds
oder lieber den Stack benutzen, weil man den Heap nicht automatisch freigegeben wird
char name[100]; //... scanf("%s\n",name); //<-- das \n kann dir viel Ärger sparen
btw. ist der Turbo C nicht mehr der neueste Compiler! Für DOS solltest du dir mal den DJGPP angucken