prog < infile
prog > outfile
prog < infile > outfile
prog1 | prog2
#include <stdio.h>
| 機能 | 入力 | 出力 | 備考 |
|---|---|---|---|
| 1文字 | int getchar(); | int putchar(int c); | |
| int getc(FILE *fp); | int putc(int c, FILE *fp); | ファイル | |
| int fgetc(FILE *fp); | int fputc(int c, FILE *fp); | ||
| 文字列 | char *gets(char *s); | int puts(char *s); | |
| char *fgets(char *s, int n, FILE *fp); | int fputs(char *s, FILE *fp); | ファイル | |
| 書式付き | int scanf(char *format, ...); | int printf(char *format, ...); | |
| int sscanf(char *buf, char *format, ...); | int sprintf(char *buf, char *format, ...); | 文字列 | |
| int fscanf(FILE *fp, char *format, ...); | int fprintf(FILE *fp, char *format, ...); | ファイル |
/* 入力をそのまま出力にコピーするプログラム(1文字ずつ) */
#include <stdio.h>
main()
{
int c;
/* getchar()は、ファイルの終わりにきたときは EOF(値は通常-1)を返す */
while( (c = getchar()) != EOF )
putchar(c);
}
/* end of pipec.c */
/* 入力をそのまま出力にコピーするプログラム(1行ずつ) */
#include <stdio.h>
#define MAXLINE 256
main()
{
char buffer[MAXLINE];
/* gets()は、ファイルの終わりにきたときは NULL(値は0)を返す */
while( gets(buffer) != NULL ) /* gets()は'\n'を保存しない */
puts(buffer); /* puts()は末尾に'\n'を追加する */
}
/* end of pipes.c */
/* 入力をそのまま出力にコピーするプログラム(バッファサイズ毎に) */
#include <stdio.h>
#define MAXBUF 10
main()
{
char buffer[MAXBUF];
/* fgets(□, n, ○)は、○から□に最大n-1文字読み込み最後に'\0'を追加する */
while( fgets(buffer, MAXBUF, stdin) != NULL ) /* fgets()は'\n'も保存する */
puts(buffer); /* bufferに読み込まれた内容を1行に出力してみる */
/*
fputs(buffer, stdout);
fgets()に対応するのはfputs()であり、末尾に'\n'を追加しない
*/
}
/* end of pipen.c */
| 文字 | 機能 | 備考(引数の型) | |
|---|---|---|---|
| scanf | printf | ||
| d | 10進整数 | (int *) | (int) |
| ld | (long *) | (long) | |
| o | 8進整数 | 先頭の0(ゼロ)は無くても良い(unsigned int *) | 先行の0(ゼロ)なし(unsigned int) |
| lo | 先頭の0(ゼロ)は無くても良い(unsigned long *) | 先行の0(ゼロ)なし(unsigned long) | |
| x | 16進整数 | 先頭の0xまたは0X(ゼロ・エックス)は無くても良い(unsigned int *) | 先行の0xまたは0X(ゼロ・エックス)なし(unsigned int) |
| lx | 先頭の0xまたは0X(ゼロ・エックス)は無くても良い(unsigned long *) | 先行の0xまたは0X(ゼロ・エックス)なし(unsigned long) | |
| u | 符号無し10進整数 | (unsigned int *) | (unsigned int) |
| lu | (unsigned long *) | (unsigned long) | |
| i | 整数 | 先頭が0(ゼロ)なら8進数、先頭の0xまたは0X(ゼロ・エックス)なら16進数、それ以外は10進数(int *) | 10進整数(int) |
| li | 先頭が0(ゼロ)なら8進数、先頭の0xまたは0X(ゼロ・エックス)なら16進数、それ以外は10進数(long *) | 10進整数(long) | |
| c | 1文字 | 空白文字は飛ばされない、次の非空白文字を読み込むには%1sを使う(char *) | (int) |
| s | 文字列(引用符なし) | 非空白文字の列にマッチ(空白文字を飛ばす)、文字列の長さ+1の領域が必要(char *) | (char *) |
| e | 浮動小数点数 | 符号、小数点、指数部は省略可能(float *) | [-]m.dddddde±xx(double) |
| f | [-]m.dddddd(double) | ||
| g | %eと%fの折衷(double) | ||
| le | 符号、小数点、指数部は省略可能(double *) | ||
| lf | |||
| lg | |||
| % | 文字%を表す | 代入は行なわれない | %を印字 |
実行結果("Hello World"の種々の表示)
|
/* printfの書式文字列(文字列編) */
#include <stdio.h>
char s[] = "Hello World";
char ss[40];
int w, n;
main()
{
printf(" :12345678901234567890\n");
printf(" :%%s: :%s:\n", s);
printf(" :%%5s: :%5s:\n", s);
printf(" :%%.5s: :%.5s:\n", s);
printf(" :%%15s: :%15s:\n", s);
printf(" :%%-15s: :%-15s:\n", s);
printf(" :%%.15s: :%.15s:\n", s);
printf(" :%%15.5s: :%15.5s:\n", s);
printf(":%%-15.5s: :%-15.5s:\n", s);
printf(" :12345678901234567890\n");
printf("\n");
printf("Input a string: ");
scanf("%s", ss );
printf("Input width and number: ");
scanf("%d %d", &w, &n );
printf(":12345678901234567890\n");
printf(":%*.*s: :%%%d.%ds:\n", w, n, ss, w, n );
}
/* end of printfs.c */
実行結果(123及びπの種々の表示)
|
/* printfの書式文字列(数値編) */
#include <stdio.h>
#include <math.h>
#define MORE
int i = 123;
int ii;
double d = 3.1415926535;
double dd;
int e, w, n;
main()
{
#ifdef MORE
printf(" %%d, %%o, %%x\n");
printf("%d,%o,%x\n", i, i, i );
printf(" %%05d, %%06o, %%04x\n");
printf("%05d,%06o,%04x\n", i, i, i );
printf(" %%e, %%f, %%g\n");
printf("%e,%f,%g\n", d, d, d );
printf("\n");
printf("%%d:\n1234567890\n");
for( e = 0; e < 5; e++ )
{
ii = i * pow( 10.0, e );
printf("%d:\n", ii );
}
printf("%%5d:\n1234567890\n");
for( e = 0; e < 5; e++ )
{
ii = i * pow( 10.0, e );
printf("%5d:\n", ii );
}
printf("%%05d:\n1234567890\n");
for( e = 0; e < 5; e++ )
{
ii = i * pow( 10.0, e );
printf("%05d:\n", ii );
}
printf("%%10d:\n1234567890\n");
for( e = 0; e < 5; e++ )
{
ii = i * pow( 10.0, e );
printf("%10d:\n", ii );
}
printf("%%-10d:\n1234567890\n");
for( e = 0; e < 5; e++ )
{
ii = i * pow( 10.0, e );
printf("%-10d:\n", ii );
}
printf("\n");
printf(" %%e, %%f, %%g\n");
for( e = -6; e < 7; e++ )
{
dd = d * pow( 10.0, e );
printf("%e,%f,%g\n", dd, dd, dd );
}
printf(" %%.4e, %%.4f, %%.4g\n");
for( e = -6; e < 7; e++ )
{
dd = d * pow( 10.0, e );
printf("%.4e,%.4f,%.4g\n", dd, dd, dd );
}
printf(" %%10.2e, %%10.2f, %%10.2g\n");
printf("1234567890:1234567890:1234567890:\n");
for( e = -6; e < 7; e++ )
{
dd = d * pow( 10.0, e );
printf("%10.2e,%10.2f,%10.2g\n", dd, dd, dd );
}
#else
printf("\n");
printf("Input a number: ");
scanf("%lf", &dd );
printf("Input width and number: ");
scanf("%d %d", &w, &n );
printf(":12345678901234567890\n");
printf(":%*.*e: :%%%d.%de:\n", w, n, dd, w, n );
printf(":%*.*f: :%%%d.%df:\n", w, n, dd, w, n );
printf(":%*.*g: :%%%d.%dg:\n", w, n, dd, w, n );
#endif
}
/* end of printfn.c */
実行結果(d)
|
実行結果(e,f,g)![]() |
実行結果(「#define MORE」をコメントアウト)
| |