画面への文字出力

画面へ 1 文字単位で出力

putchar.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/*
  stdio.h [putchar]
  
  書式: int putchar (int c)
  機能: 標準出力 (画面) へ 1 文字出力する
  引数: int c: 出力する 1 文字
  戻り値: 成功すると, 出力した文字を返し,
          失敗すると, EOF(-1) を返す.
*/

#include <stdio.h>

int main(void){
  int i;
  char lower = 'a';
  char upper = 'A';

  for(i = 0; i < 26; i++){
    putchar(lower+i);
  }
  printf("\n");

  for(i = 0; i < 26; i++){
    putchar(upper+i);
  }
  printf("\n");
  
  return 0;
}

putchar.c の実行結果は:

[cactus:~/code_c/refer]% ./putchar
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

画面へ 1 行単位で出力

puts.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
  stdio.h [puts]

  書式: int puts (const char *s)
  機能: 標準出力 (画面) へ 1行出力する
  引数: const char *s: 出力する文字列
  戻り値: 成功すると, 0 を返し,
          失敗すると, EOF(-1) を返す.
*/
#include <stdio.h>

int main(void){
  char *s1 = "test1";
  char *s2 = "test2";
  
  char *kanji1 = "テスト 1";
  char *kanji2 = "テスト 2";

  puts(s1);
  puts(s2);
  
  puts(kanji1);
  puts(kanji2);
  
  return 0;
}

puts.c の実行結果は:

[cactus:~/code_c/refer]% ./puts
test1
test2
テスト 1
テスト 2

画面へ書式付きで出力

printf.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*
  stdio.h [printf]

  書式: int printf (const char *format, ...)
  機能: 標準出力 (画面) へ 書式付きで出力する
  引数: const char *format: 書式文字列
        ...: 可変個引数で書式で指定された変数を
	カンマ区切りで指定する
  戻り値: 成功すると, 0 を返し,
          失敗すると, EOF(-1) を返す.
*/
/*
  変換指定子:
  %d: 10 進数
  %c: 文字
  %s: 文字列
  %o: 8 進数
  %x: 16 進数 (小文字)
  %X: 16 進数 (大文字)
  %f: 浮動小数点
  %%: %(パーセント) 記号を表示
*/
/*
  エスケープシーケンス:
  \n: 改行
  \t: タブ文字
  \0: 文字列の終端記号 (数値では 0)
  \\: \ 記号を表示
*/

#include <stdio.h>

int main(void){
  int i = 123;
  float f = 123.123456;
  double d = 123.123456789012345;
  char c = 'a';
  char *s = "abcdefg";

  printf("%%d [整数]で表示\n");
  printf("i = %d\n", i); /* 123 */
  printf("i = %05d\n", i); /* 00123 */
  printf("\n");

  printf("%%X [16進数]で表示\n");
  printf("i = %x\n", i); /* 7b */
  printf("i = %X\n", i); /* 7B */
  printf("i = %#x\n", i); /* 0x7b */
  printf("i = %#X\n", i); /* 0X7B */
  printf("\n");

  printf("%%o [8進数]で表示\n");
  printf("i = %o\n", i); /* 173 */
  printf("i = %#o\n", i); /* 0173 */
  printf( "\n" );

  printf("%%f [浮動小数点]で表示\n");
  printf("f = %f\n", f); /* 123.123459 */
  printf("f = %.7f\n", f); /* 123.1234589 */
  printf("f = %9.3f\n", f); /*   123.123 */
  printf("d = %f\n", d); /* 123.123457 */
  printf("d = %.15f\n", d); /* 123.123456789012350 */
  printf("d = %9.3f\n", d); /*   123.123 */
  printf( "\n" );

  printf("%%c [文字]で表示\n");
  printf("c = %c\n", c); /* a */
  printf("\n");
  printf("%%s [文字列]で表示\n");
  printf("s = %s\n", s); /* abcdefg */
  printf("s = %.3s\n", s); /* abc */
  printf("\n");
  
  return 0;
}

printf.c の実行結果は:

[cactus:~/code_c/refer]% ./printf
%d [整数]で表示
i = 123
i = 00123

%X [16進数]で表示
i = 7b
i = 7B
i = 0x7b
i = 0X7B

%o [8進数]で表示
i = 173
i = 0173

%f [浮動小数点]で表示
f = 123.123459
f = 123.1234589
f =   123.123
d = 123.123457
d = 123.123456789012351
d =   123.123

%c [文字]で表示
c = a

%s [文字列]で表示
s = abcdefg
s = abc

可変個引数を書式付き表示

vprintf.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
  stdio.h [vprintf]

  書式: int vprintf (const char *format, va_list *arg)
  機能: 可変個引数リストを書式付きで画面に出力
  引数: const char *format: 書式文字列
        va_list *arg: 可変個引数リスト
  戻り値: 成功すると, 出力バイト数を返し,
          失敗すると, 負値を返す.
*/

#include <stdio.h>
#include <stdarg.h> /* va_list */

void func(int num, ...);

int main(void){
  func(5, 'a', 0.123, 10, 123, "ABC");
  
  return 0;
}
void func(int num, ...){
  va_list arg;
  
  /* 可変引数リスト初期化 */
  va_start(arg, num);
  
  /* 可変個の引数を取り出し */
  vprintf("%c, %0.3f, %d, %#x, %s \n", arg);

  /* 可変引数リスト終了 */
  va_end(arg);
}

vprintf.c の実行結果は:

[cactus:~/code_c/refer]% ./vprintf
a, 0.123, 10, 0x7b, ABC