Ich habe den folgenden Code, wich ich schwer zu verstehen, warum es so funktioniert, es funktioniert:Warum sieht ein Scanf so aus, als würde sich das Verhalten von char * ändern?
char* str = "HELLO";
printf("%s",&str[0]); //Returns Hello as expected
printf("%c",str[2]); //Returns L as aspected
scanf("%s",&str); //I enter aaaa
printf("%s\n",&str); /* If I want to access the word I have to do this way
&str[0] now gives a segmentation fault.*/
printf("%c\n",&str[1]); /*This gives a b???!!!. I haven't found any way to
access individual character with *str.*/
ich in besonders interessiert bin, warum sieht es keinen Weg, um die einzelnen Zeichen zuzugreifen, obwohl in Irgendwie macht es Sinn, schließlich soll man einen Zeiger auf char deklarieren, ich frage mich, wie es irgendwie als String funktionieren kann. Aber ich würde gerne wissen, warum der erste als eine Reihe von Zeichen wie erwartet funktioniert und nicht die zweite.
Danke.
Sie benötigen a) Compiler-Warnungen und b) ein gutes Handbuch. –
Aktivieren Sie Warnungen in Ihrem Compiler und behandeln Sie sie als Fehler. –
@ user2638180: Sie können die Antwort akzeptieren, indem Sie auf das graue Häkchen unterhalb der Punktzahl klicken. – chqrlie