#include<stdio.h>
main(){
printf("%s\n","Hello work!");
}
実行結果
Hello work!
第1回のプログラムの時と同じ結果に、ちょっぴり拍子抜けした方がいるかもしれません。ただし、今回のプログラムの実行結果には、Hello work!の後に実は改行コードがあるので、全く同じという訳ではありません。全く同じにしたいのであれば、第1回のプログラムの3行目printfのところを、
printf("Hello work!\n");
に変える必要があります。\nは制御文字で、改行したい時に使うということは前回学びました。ま、まさか、忘れていないでしょうね!?忘れてしまった方はこちら。
さて、今回のプログラムの3行目に注目してみましょう。
printf("%s\n","Hello work!");
前回までは、printf("文字列");というスタイルだったのに対して、今回はprintf("文字列その1","文字列その2");になっています。
さらに、文字列その1の中の文字列に注目してみましょう。
%s\n
\nの方はいいとして(え、わからない?ならばこっち)今回、問題なのは%sの方。つまりこいつが、今回のテーマともいうべき変換文字という訳です。で、詳細についてはK&R2第7章7.2を参照して下さい。
つづく。
というのもあんまりなので、一応、説明してみます。あ、でもK&R2第7章の7.2は開いてね。
printf("%s\n","Hello work!");
でいうと、Hello work!、という訳なんです。
復習してみますと、
printf("説明%s\n","へたくそッ!");
printf("説明へたくそッ!\n");
と実行結果が同じになります。
文字列型の変換文字%sはこれくらいにして、次は整数(10進数)の変換文字%dについて学習するとしましょう。
長々と説明するより、一気にプログラムを見せた方が、かえってわかり易いと思いますので・・・
#include<stdio.h>
main(){
printf("%dと%d\n",15,20);
}
お馴染みの3行目printfのところを見ると、さっきのプログラムで文字列その2だった部分が、数字(15)になっています。しかも、""で囲まれていません。さらにもう1つ(20が)増えています。:-)
結論からいうと、""で囲むのは文字列だけで、数字は囲みません。仮に数字を""で囲んだ場合、それは文字列として扱われます。また単一の文字(文字列じゃないヨ)の時は、''で囲みます。
例えば、単一の文字Kを単一文字の変換文字%cを使って出力する場合は、
printf("%c\n",'K');
あと、さっき1つ(20が)増えた件ですが、これは()の中の1つ目の文字列の中に、変換文字%dが1つ追加されたからです。
さらにもう1つ、以下のように変換文字%sを加えれば、今度はさっきの20の後に、さらに文字列が増えることになります。
#include<stdio.h>
main(){
printf("%dと%dは%sです。\n",15,20,"整数");
}
最後に、数値15を変換文字%oで8進数、%xで16進数で出力するプログラムです。()の中の3つ目の引数を、数字(15)ではなくて、数式(10+5)にしてみました。
#include<stdio.h>
main(){
printf(" 8進数:%o\n16進数:%x\n",15,10+5);
}
実行結果
8進数:17
16進数:f
つづく。