printfの使い方~書式制御文字列
昨日printfをいろいろいじくりまわしたときのソースコードを貼っておきます。
#include <stdio.h> //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 <stdio.h> //<- standard input output Library //#include <iostream> //#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);