以前、int型のポインタについて、質問しました。
今回はchar型のほうです。
1,
char *buf; scanf("%s", buf);
これがダメな理由を教えてください。NULLポインタで初期化してもsegmentation faultでした。
Linuxだと、上記のやり方でも、エラーはでませんが、windowsだと強制的に終了します。
char buffer[1024]; char *buf = buffer2; scanf("%s", buf);
こちらは問題ありませんでした。
なので、
char *buf = "you will make me happy"; scanf("%s", buf);
とやってみました。 これもダメでした・・・・
2,
char *buf = "123"; buf = "456"; *buf = 'Z'; これは問題がありません。ですが・・・ *buf = "456"; とやるとエラーです。
なぜです?? *buf = "456"の方が正しくみえるのですが・・・
buf と *bufの違いがまだよくわかっていません。
3,
char str[8]; char *ptr = str; scanf("%s", &ptr);
これはどういうことですか??
実際にやってみて、printf("%s", ptr);とやるとエラーになるんですが・・・
4,
char s[] = "ABC"; s = "DEF";
これはエラーですね。
なんで、ダメなんですか??
配列の値を上書きするには、他に方法がありますか??
ちょっといろいろ混乱していて、わかりません。
教えてください。
[追記]
int *w, a;
w = &a
printf("%d", *w);
int 型はこうできます。
char *buf = "jfkdoaur";
printf("%s", *buf);これはエラーでした。
printf("%s", buf);
char型の場合はprintf("%s", *buf);ではダメなようです・・・
何が違うんですか??
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/14 07:57
2017/01/14 07:59
2017/01/14 08:08
2017/01/14 08:10
2017/01/14 08:17
2017/01/14 08:39
2017/01/14 08:40