char *str;
while(1)
{
printf("$$$$>");
scanf("%s",str);
}
In diesem Code möchte ich nur eine Eingabeaufforderung drucken. Wenn der Benutzer etwas eingibt, passiert nichts und die Eingabeaufforderung wird erneut gedruckt. Aber die scanf() läuft einmal und dann $$$$> wird in Schleife gedruckt. Der Code wird ausgeführt, wenn ich versuchte, ein Zeichenarray anstelle eines str-Zeigers zu verwenden. warum?mit printf und dann scanf in loop
' sizeof (char) 'ist immer 1, also fügt es dem Code keinen Wert hinzu. Wenn man den Typ von 'str' abgleichen will, benutzt man einfach' str = malloc (sizeof * str * 1000); ' – chux
Sie sind so falsch ... die Größe von char ist 1, das ist für die Lesbarkeit des Codes ... und str ist eine Adresse, so dass Sie gerade 1000 * Adresse-Wert, die Millionen von Bytes sein können zugeordnet ... und auch müssen Sie nicht "jeden" Typ "übereinstimmen" ... Sie offensichtlich nicht wissen c .. –
Hmmm "offensichtlich nicht wissen, c "-> Siehe [badge] (http://stackoverflow.com/help/badges/96/c?userid=2410359) und" und str ist eine Adresse, also hast du gerade 1000 * address-value "-> no zugewiesen , 1000 mal der _type_ des de-referenzierten 'str' zugewiesen, was in diesem Fall' sizeof * str * 1000' -> '1 * 1000', nicht" kann Millionen von Bytes sein "pro [Kommentar] (http : //stackoverflow.com/questions/38673272/using-printf-and-then-scanf-in-loop/38673321? noredirect = 1 # comment64740319_38673321). Test mit 'printf vorschlagen ("% zu \ n ", sizeof * str * 1000);' – chux