-1
私はそれはそれがないように動作する理由を理解するのは難しい見つける次のコードウィッヒをしました:なぜscanfはchar *の動作を変えるように見えるのですか?
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.*/
であるが、私は、個々の文字にアクセスする方法はないように見える理由で特別に興味何らかの意味がありますが、charへのポインタを宣言しているはずですが、何らかの方法で文字列としてどのように動作するのでしょうか。しかし、私は最初のものが期待どおりの文字の配列として動作し、2番目のものではない理由を知りたいと思います。
ありがとうございました。
a)コンパイラの警告、b)良いマニュアルが必要です。 –
コンパイラで警告を有効にし、エラーとして扱います。 –
@ user2638180:スコアの下にあるグレーのチェックマークをクリックすると回答を受け入れることができます。 – chqrlie