うむうむ。printf関数での話やね?
%sというのは、引数をアドレスと仮定し、そのアドレスから「バイト単位で」値を全部舐めていき0が出たところで打ち切るというものやね。この「0」は、C言語のソースファイルに記述する形式で表現すると'\0'だ。
%cというのは、引数を1バイト(1オクテットではない)の固定データと仮定し、その値を1文字として表示する。何の値で何を表示するかはマシンによる。日本では九分九厘ASCIIかEBCDIC。ASCIIで32という値だと半角スペースだね。1オクテットではない、と言ったのは、1バイトが9ビットである場合もあるからだ(日本人はまずお目にかからないでしょうが)。
int main(int argc, char** argv) {
char c = 'C';
char* s = "String";
printf("char = %c\n", c);
printf("string = %s\n", s);
printf("char in string = %c\n", *s);
printf("string = %s\n", (int)c); /* とんでもないことになる */
char* ss = s;
while(*ss++) {
printf("char in string = %c\n", *ss);
}
return 0;
}
頭ん中だけで全然試してないので勉強のために動きを見てみてほしい。実際動かす時はとんでもの行はコメントアウトしておくこと。
お礼
回答ありがとうございますm(__)mせっかくプログラム書いて頂いたのですが、家では実行できないので、明日学校でやってみたいと思います。