おさえておきたいプログラミングの基本
printf関数についてもう少し深堀してみましょう。
これから、C言語でプログラムを作る方法を学習していきます。その中でも、一番基礎的で、かつ有名なプログラムが、これから紹介する、Hello,Worldと呼ばれるサンプルです。
printf()関数の書式指定で%dを指定すると整数を表示できましたが、次のように、桁数を指定することも可能です。
printf-ex1:main.c#include <stdio.h>
int main(int argc, char** argv){
printf("%05d\n", 100); // 5桁で100を表示(空白部分は0で埋める)
printf("%5d\n", 100); // 5桁で100を表示(空白部分はスペースで埋める)
return 0;
}
実行結果
%dの前に、数値を書けば、その桁に合わせて数値を表示します。また、さらにその数値の前に、0を入れれば、空白部分に0を入れた数値が表示されます。
続いて、実数の桁ぞろえのケースを見て見ましょう。実数の場合は、小数点以下の値もあるので、そちらもあわせて設定しておく必要があります。
printf-ex2:main.c#include <stdio.h>
int main(int argc, char** argv){
// 空白部分に0がつかないケース
printf("%10.2f\n",123.456); // 全10桁。小数点以下2桁
printf("%10.3f\n",123.456); // 全10桁。小数点以下3桁
printf("%10.4f\n",123.456); // 全10桁。小数点以下4桁
// 空白部分に0がつくケース
printf("%010.02f\n",123.456); // 全10桁。小数点以下2桁
printf("%010.03f\n",123.456); // 全10桁。小数点以下3桁
printf("%010.04f\n",123.456); // 全10桁。小数点以下4桁
return 0;
}
実行結果
C言語の基本と、printf()関数の基本がわかったところで、この関数を利用して様々な処理を試してみましょう。
文字列の場合も、同様に様々な操作ができます。文字列の表示は、%sを使いますが、この場合も先頭に様々な記述をすることにより、色々な表示方法が実現できます。まずは、以下のサンプルを見てください。
printf-ex3:main.c#include <stdio.h>
int main(int argc, char** argv){
printf("%10s\n", "ABCDE"); // 右詰め10文字(余りは空白)
printf("%-10s\n", "ABCDE"); // 左詰め10文字(余りは空白)
printf("%.2s\n", "ABCDE"); // 先頭2文字のみ表示
return 0;
}
実行結果
%とsの間に、「10s」と指定することで、10文字の文字列の中で、右詰めで文字列が表示されます。
文字列のない部分は、空白で補完されます。また、「-10s」とすれば、10文字での左詰めです。さらに「.2s」とすることで、文字列の先頭2文字のみが表示されています。
このようにして、文字列も様々な操作をすることが可能です。
また、printf()での型の指定は、間違いを起こしやすいので注意が必要です。明らかなエラーにはビルドエラーが出るのですが、エラーが出ない場合も少なくなく、やっかいです。そこで、ここではよくあるprintf()の間違いを紹介します。
printf-ex4:main.c#include <stdio.h>
int main(int argc, char** argv){
printf("%d\n", 1, 2); // きちんと表示できないケース① ~ %dの数が足りない。
printf("%d\n"); // きちんと表示できないケース② ~ 表示する内容がない。
printf("%d\n", "ABCDE"); // きちんと表示できないケース③ ~ 型が違う。
printf("%s\n", 1); // きちんと表示できないケース④ ~ 実行時エラー。
return 0;
}
b>実行結果
4行目のケースは、表示する数値に対して、%dの数が足りないようなケースです。先頭の1しか表示されません。
また、5行目は、%dがあるものの、そのあとに数値が指定されていません。
さらに6行目と7行目は、型の違う値を指定するケースです。6行目のケースは、でたらめな値が表示されます。このように、printf()の書式の使い方を誤ると、ビルドエラーは出ないものの、思いかけない動作をしたり、プログラムが異常終了したりしますので、気をつけましょう。
練習問題 : 問題1.
一週間でわかるC言語・C++言語がオンライン講座になりました!動画と音声によってさらにわかりやすくなりました!! 1講座で2つの言語を学ぶことができる上に、練習問題の回答もダウンロードできます。
Read →本講座が「1週間でC言語の基礎が学べる本」として書籍化されました!サイトの内容プラスアルファでより学習しやすくなっています!Impressより発売中です!!
Read →