一週間で身につくC言語の基本

おさえておきたいプログラミングの基本

【1日目】 最も基本的なプログラム

printf関数についてもう少し深堀してみましょう。

1-1.printfの様々な書式指定①(数値の場合)

これから、C言語でプログラムを作る方法を学習していきます。その中でも、一番基礎的で、かつ有名なプログラムが、これから紹介する、Hello,Worldと呼ばれるサンプルです。

(1) 桁数の指定

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;
}
実行結果
00100 100

%dの前に、数値を書けば、その桁に合わせて数値を表示します。また、さらにその数値の前に、0を入れれば、空白部分に0を入れた数値が表示されます。

(2) 実数の桁ぞろえ

続いて、実数の桁ぞろえのケースを見て見ましょう。実数の場合は、小数点以下の値もあるので、そちらもあわせて設定しておく必要があります。

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;
}
実行結果
123.46 123.456 123.4560 0000123.46 000123.456 00123.4560

1-3.printfの様々な書式指定②(文字列の場合)

C言語の基本と、printf()関数の基本がわかったところで、この関数を利用して様々な処理を試してみましょう。

(1) 文字列の表示方法の指定

文字列の場合も、同様に様々な操作ができます。文字列の表示は、%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;
}
実行結果
ABCDE ABCDE AB

%とsの間に、「10s」と指定することで、10文字の文字列の中で、右詰めで文字列が表示されます。

文字列のない部分は、空白で補完されます。また、「-10s」とすれば、10文字での左詰めです。さらに「.2s」とすることで、文字列の先頭2文字のみが表示されています。

このようにして、文字列も様々な操作をすることが可能です。

1-4.printfの様々な書式指定③(誤った型の指定)

(1) 型指定を誤るとどうなるか

また、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>実行結果
1 -76964928 -76964824

4行目のケースは、表示する数値に対して、%dの数が足りないようなケースです。先頭の1しか表示されません。

また、5行目は、%dがあるものの、そのあとに数値が指定されていません。

さらに6行目と7行目は、型の違う値を指定するケースです。6行目のケースは、でたらめな値が表示されます。このように、printf()の書式の使い方を誤ると、ビルドエラーは出ないものの、思いかけない動作をしたり、プログラムが異常終了したりしますので、気をつけましょう。


1日目のメインページに戻る

練習問題 : 問題1.

一週間で学べるコースの一覧
Udemy
...
2024/10/01

Udemyでも学びましょう!

一週間でわかるC言語・C++言語がオンライン講座になりました!動画音声によってさらにわかりやすくなりました!! 1講座で2つの言語を学ぶことができる上に、練習問題の回答もダウンロードできます。

Read →
Impress一週間シリーズ
1週間でC言語の基礎が学べる本
2024/10/01

書籍化された一週間シリーズ

本講座が「1週間でC言語の基礎が学べる本」として書籍化されました!サイトの内容プラスアルファでより学習しやすくなっています!Impressより発売中です!!

Read →
Impress一週間シリーズ
...
2024/10/01

書籍化された一週間シリーズ

一週間シリーズは書籍化されています。こちらもどうぞ!

Read →
プログラマーなら欲しいグッズ
プログラミンググッズ

プログラミンググッズ

快適なプログラミング環境を構築したい人々にぜひとも揃えてほしいグッズです。

Read →
制作・管理
シフトシステム株式会社

シフトシステム株式会社

このサイトはシフトシステム株式会社によって制作・管理がなされています。

Read →