===== printfの使い方~書式制御文字列 =====
* [[game-engineer:classes:2021:game-programing-1:clang:clang-printf|printfを使ってみようズ]]
* [[game-engineer:classes:2021:game-programing-1:clang:clang-printf-ex|printf実践編?]]
* [[game-engineer:classes:2021:game-programing-1:second-term:01:01-20-2|おまけ、CとC++の違い]]
* [[game-engineer:classes:2021:game-programing-1:clang:clang_misc|その他大事そうなところ(ライブラリ関数はすべて覚えないとだめよ)]]
昨日printfをいろいろいじくりまわしたときのソースコードを貼っておきます。\\
#include
//stdio 標準入出力ライブラリ printf scanfとかの関数が
int main(void)
{
//宣言部
int a = 10;
double b = 2223.1415926535;
int i;
char str[] = "tohokudenshiengineering";
//char str[0] => 't',char str[1] => 'o', ... char str[24] => '\0'
//処理部
//printf("aの値は%dです\n", a); %%/* 整数のフォーマット指定%%
//printf("bの値は%lfです\n", b); //小数のフォーマット指定
//printf("aの値は%3dです, bの値は%3lfです\n", a, b);
//整数の仲間をいろんな表示にするフォーマット指定
printf("aの値は%uです\n", a); //符号なし10進数表記で表示
printf("aの値は%oです\n", a); // 8進数表記
printf("aの値は%xです\n", a); //16進数表記
printf("bの値は%lfです\n", b); //普通の小数表記
//普通の小数表記(全体の桁数.小数点以下の桁数)
//整数部が桁オーバーしたときは表示されるよ。
printf("bの値は%16.10lfです\n", b);
printf("bの値は%eです\n", b); //指数表示する指定
printf("bの値は%gです\n", b); //指数と小数点表記適切そうな方で表示
printf("文字列の表示 %s\n", str);
for(i=0; i<24; i++ )
{
printf("str[%02d] => %c\n",i, str[i]);
}
for(i=0; i<20; i++)
{
//変数iの値は○○です。
//cout << "変数iの値は" << i << "です。" << endl;
printf("変数iの値は%xです\n", i);
}
//
printf("\n");
//値のreturn
return 0;
}
==== 見つけてしまったので前々回の座学で説明したソースコード(C言語との違いなど) ====
#include //<- standard input output Library
//#include
//#include "myheader.h" <-自作ヘッダは同じ
// I/O <- input output 入出力
//C言語では、引数なしの関数は引数にvoidって書く
void plus(void)
{
printf("plus plus\n");
}
//printf -> 標準出力に出力する関数(C++のcout << )
//printf(文字列); 文字列を表示
//文字列←ダブルクォーテーションで囲まれた文字の列
//例)"yamada tarou" "tohoku denshi" "sendai jirou"
//改行文字 => エスケープシーケンスで表す "\n" 改行文字
int main(void)
{
/* C言語のコメントはこれだよ */
//文字列を変数に代入する stringがないよ。。。
//文字配列で表す。
char strarray[] = "hello\n";
//char strarray[] = { 'h','l','l','o','\n','\0' };
//これを簡単に書くのが上の書き方
int i, sum = 0; //宣言部に書く
plus(); // <-呼び出すときは引数なしの場合、()でよい
printf("hello, world\n");
printf(strarray);
for (i = 0; i < 10; i++)
{
sum = sum + i;
}
//cout << sum << endl;
printf("sum = %d\n", sum);
//%d を使うと 整数値を文字列に埋め込むことができる
printf("pi = %lf\n", 3.1415926535);
//%lf を使うと 浮動小数点数を文字列に埋め込むことができる
printf("unsigned char 65 = %c\n", (unsigned char)65);
//%c を使うと 文字1文字を文字列に埋め込むことができる
printf("strarrayの中身: %s", strarray);
//%s を使うと 文字列を文字列に埋め込むことができる
return 0;
}
=== 確認問題 ===
int a=5, b=100;
double c=2.5, d=3.14151926535;
char str1[] = "clang";
char *str2 = "tohokudenshi";
のとき、以下の出力はどうなるか答えなさい!\\
- printf("%3d, %2d\n", a, b);
- printf("%03d, %04d\n", a, b);
- printf("%-4d, %-4dn", a, b);
- printf("%5o, %5o\n", a, b);
- printf("%5x, %5x\n", a, b);
- printf("c = %lf, d = %lf\n", c, d);
- printf("c = %5.0lf, d = % 5.4lf\n);
- printf("%c %c\n", str1[0], str1[2]);
- printf("%s\n", str);
- printf("str1は%8sです\n", str1);
- printf("str1は%-8sです\n", str1);
- printf("str2は%sです\n", str2);
- printf("str2は%3sです\n", str2);
- printf("str1をごにょごにょする①-> %.4s\n", str1);
- printf("str1をごにょごにょする②-> %5.3s\n", str1);
- printf("str1をごにょごにょする③-> %8.4s\n", str1);
- printf("str1をごにょごにょする④-> %-8.4s\n", str1);