Fall 1: Wenn ich String-Eingang nehmen, sie erfolgreich die Ausgabe gibt, dieses Stück Code zu schreiben:Unerwartete Ausgabe von printf für eine Zeichenfolge in C
#include <stdio.h>
int main()
{
char *str;
scanf("%s",&str);
printf("%s",&str);
return 0;
}
Fall 2: Auf der anderen Seite, es wirft einen Laufzeitfehler für diesen Schnipsel:
#include <stdio.h>
int main()
{
char *str;
scanf("%s",&str);
printf("%s",str);
return 0;
}
ich dieses Ding eigentümlich gefunden, und will wissen, warum es passiert ... Vielen Dank im Voraus.
Lesen Sie mehr über ** Strings **, ** Zeiger ** ** ** Arrays und ** dynamische Speicherzuweisung ** zusammen mit ** Formatspezifikation **. Fügen Sie Kirsche auf Kuchen hinzu, indem Sie über * undefined Verhalten * lesen. – haccks
Etwas hier fehlt es an Speicher und das ist 'str'. –
Abgesehen davon, dass Sie Speicher für 'str' nicht reserviert haben, ist Fall 2 die korrekte Implementierung. Fügen Sie vor der Verwendung ein 'str = malloc (50);' oder ähnliches hinzu. Sie haben Glück im Fall 1 und nur eine Erinnerung, die Ihnen nicht gehört. – eddiem