printf関数およびsprintf関数およびfprintf関数の使用詳細


printf関数
関数プロトタイプ
int printf(char *format[,argument…]);
文字列formatはフォーマット文字列,[,argument・・]は変数リストである.
ヘッダファイルを含むstdio.hこの関数を呼び出すことができる
関数の機能
一般的なフォーマット出力関数
使用方法の説明
一般的な変換の説明
%c 1文字
%d符号10進整数%e浮動小数点数、e-記数法%E浮動小数点数、E-記数法%f浮動小数点数、10進記数法
%i符号付き10進数(%dと同じ)%o符号なし8進数整数%pポインタ%s文字列%u符号なし10進数整数%x 16進数0 fの符号なし16進数整数%X 16進数0 fの符号なし16進数整数%%を使用してパーセントを印刷
 
例:
#include<stdio.h>

int main()
{
    int a='a';
    float b=3.1415;
    int *p=&a;
    char *str="hello world!";
    printf("%d
",a); printf("%c
",a); printf("%e
",b); printf("%E
",b); printf("%f
",b); printf("%i
",a); printf("%o
",a); printf("%p
",p); printf("%s
",str); printf("%u
",a); printf("%x
",a); printf("%X
",a); printf("%%
"); a=-10; printf("%u
",a); return 0; }

結果:
97
a
3.141500e+000
3.141500E+000
3.141500
97
141
0022FF44
Hello world!
97
61
61
%
4294967286

常用フォーマット制御
 
+または省略出力:右揃え出力を表します-:あり-左揃え出力を表します
m.n:mはドメイン幅、すなわち対応する出力項目が出力装置に占める文字数を指す.nは精度を指す.出力の実数を説明するための小数点以下の桁数.nを指定した場合、暗黙の精度はn=6ビットとなります.例:
#include<stdio.h>

int main()
{
    float b=3.1415;
    double d=3.1415;
    char *str="hello world!";
    printf("%f
",d); printf("%.4f
",d); printf("%.2f
",d); printf("%6.4f
",d); printf("%4.4f
",d); printf("%10.4f
",d); printf("%-10.4f
",d); printf("%s
",str); printf("%.5s
",str); printf("%6.5s
",str); return 0; }

結果:
3.141500
3.1415
3.14
3.1415
3.1415
    3.1415
3.1415
hello world!
hello
 hello

あつりょくスタック
printf関数はC呼び出し仕様、すなわちパラメータが右から左にスタックを押し、スタックが呼び出し者によってバランスされる.△このような右から左への方式は、コンパイラ、機械によって異なることはありません.
例:
#include<stdio.h>

int main()
{
    char *str="abc";
    char *p=str;
    printf("%c%c",*p,(*p++));
    return 0;
}

結果:
ba

sprintf関数
関数プロトタイプ
int sprintf(char *string, char *format[,argument…]);
文字列formatはフォーマット文字列,[,argument・・]は変数リストである.
ヘッダファイルを含むstdio.hこの関数を呼び出すことができる
関数の機能
フォーマットされた文字列formatを文字列stringに格納
使用方法の説明
例:
#include<stdio.h>

int main()
{
    char *name="jack";
    char *str;
    sprintf(str,"hello %s",name);
    printf("%s
",str); return 0; }

結果:
Hello jack

fprintf関数
関数プロトタイプ
int fprintf(FILE *stream, char *format[,argument…]);
文字列formatはフォーマット文字列,[,argument・・]は変数リストである.
ヘッダファイルを含むstdio.hこの関数を呼び出すことができる
関数の機能
fprintf()関数は、指定するformat(フォーマット)に基づいてstream(ストリーム)で指定するファイルに情報(パラメータ)を送信する.fprintf()はprintf()と同じようにしか動作しない.fprintf()の戻り値は出力文字数であり、エラーが発生すると負の値を返す.
 
使用例:
#include<stdio.h>

int main()
{
    char *name="jack";
    FILE *f;
    char str[1024]={0};
    f=fopen("test.txt","w");
    fprintf(f,"hello %s",name);
    fclose(f);
    f=fopen("test.txt","r");
    fread(str,1024,1,f);
    printf("%s
",str); fclose(f); return 0; }
結果:
hello jack