Peter.txt全体を表示してみよう。

必要なことを考えてみよう。
(1)ファイルの終わりまで作業するのでwhileループを使う。
(2) 関数fgetc()はファイルの終わりに達して,それ以上読み込めなくなるとEOFを返してくる
(3)文字番号は3桁になるので,書式では「%3d」を使う。
(4)表示できる文字だけ表示し,それ以外(\nなど)は「.」を表示する。
(5)表示できるかどうかを判定するために関数isprint()(#include <ctype.h>が必要)を使う。

Peter.txt全体を表示するプログラム
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>   /* isprint()のため */

int main()
{
    FILE *fp;
    char fname[]="Peter.txt";
    int ch; /*読み込まれた文字(文字コード)*/
    int i;

    /*ファイルオープンの手続き*/
    fp=fopen(fname,"r");
    if (fp==NULL) {
        printf("can't open %s\n",fname);
        exit(1);
    }

    i=0;
    ch=fgetc(fp);
    while (ch!=EOF) { /*ファイル終端文字でなかったら*/
        if (isprint(ch)) { /*表示できる文字コードだったら*/
            printf("%3d文字目 [%c(%3d %02xH)]\n",i,ch,ch,ch);
        } else {           /*そうでなかったら*/
            printf("%3d文字目 [.(%3d %02xH)]\n",i,ch,ch);
        }
        ch=fgetc(fp);
        i++;
    }

    /*ファイルクローズ*/
    fclose(fp);
    return 0;
}

実行結果
  0文字目 [P( 80 50H)]
  1文字目 [e(101 65H)]
  2文字目 [t(116 74H)]
  3文字目 [e(101 65H)]
  4文字目 [r(114 72H)]
  5文字目 [ ( 32 20H)]
  6文字目 [r(114 72H)]
  7文字目 [a( 97 61H)]
  8文字目 [n(110 6eH)]
  9文字目 [ ( 32 20H)]
 10文字目 [s(115 73H)]
 11文字目 [t(116 74H)]
 12文字目 [r(114 72H)]
 13文字目 [a( 97 61H)]
 14文字目 [i(105 69H)]
 15文字目 [g(103 67H)]
 16文字目 [h(104 68H)]
 17文字目 [t(116 74H)]
 18文字目 [ ( 32 20H)]
 19文字目 [a( 97 61H)]
 20文字目 [w(119 77H)]
 21文字目 [a( 97 61H)]
 22文字目 [y(121 79H)]
 23文字目 [ ( 32 20H)]
 24文字目 [t(116 74H)]
 25文字目 [o(111 6fH)]
 26文字目 [ ( 32 20H)]
 27文字目 [M( 77 4dH)]
 28文字目 [r(114 72H)]
 29文字目 [.( 46 2eH)]
 30文字目 [ ( 32 20H)]
 31文字目 [M( 77 4dH)]
 32文字目 [c( 99 63H)]
 33文字目 [G( 71 47H)]
 34文字目 [r(114 72H)]
 35文字目 [e(101 65H)]
 36文字目 [g(103 67H)]
 37文字目 [o(111 6fH)]
 38文字目 [r(114 72H)]
 39文字目 ['( 39 27H)]
 40文字目 [s(115 73H)]
 41文字目 [ ( 32 20H)]
 42文字目 [g(103 67H)]
 43文字目 [a( 97 61H)]
 44文字目 [r(114 72H)]
 45文字目 [d(100 64H)]
 46文字目 [e(101 65H)]
 47文字目 [n(110 6eH)]
 48文字目 [,( 44 2cH)]
 49文字目 [.( 10 0aH)]
 50文字目 [a( 97 61H)]
 51文字目 [n(110 6eH)]
 52文字目 [d(100 64H)]
 53文字目 [ ( 32 20H)]
 54文字目 [s(115 73H)]
 55文字目 [q(113 71H)]
 56文字目 [u(117 75H)]
 57文字目 [e(101 65H)]
 58文字目 [e(101 65H)]
 59文字目 [z(122 7aH)]
 60文字目 [e(101 65H)]
 61文字目 [d(100 64H)]
 62文字目 [ ( 32 20H)]
 63文字目 [u(117 75H)]
 64文字目 [n(110 6eH)]
 65文字目 [d(100 64H)]
 66文字目 [e(101 65H)]
 67文字目 [r(114 72H)]
 68文字目 [ ( 32 20H)]
 69文字目 [t(116 74H)]
 70文字目 [h(104 68H)]
 71文字目 [e(101 65H)]
 72文字目 [ ( 32 20H)]
 73文字目 [g(103 67H)]
 74文字目 [a( 97 61H)]
 75文字目 [t(116 74H)]
 76文字目 [e(101 65H)]
 77文字目 [!( 33 21H)]
 78文字目 [.( 10 0aH)]
 79文字目 [F( 70 46H)]
 80文字目 [i(105 69H)]
 81文字目 [r(114 72H)]
 82文字目 [s(115 73H)]
 83文字目 [t(116 74H)]
 84文字目 [ ( 32 20H)]
 85文字目 [h(104 68H)]
 86文字目 [e(101 65H)]
 87文字目 [ ( 32 20H)]
 88文字目 [a( 97 61H)]
 89文字目 [t(116 74H)]
 90文字目 [e(101 65H)]
 91文字目 [ ( 32 20H)]
 92文字目 [s(115 73H)]
 93文字目 [o(111 6fH)]
 94文字目 [m(109 6dH)]
 95文字目 [e(101 65H)]
 96文字目 [ ( 32 20H)]
 97文字目 [F( 70 46H)]
 98文字目 [r(114 72H)]
 99文字目 [e(101 65H)]
100文字目 [n(110 6eH)]
101文字目 [c( 99 63H)]
102文字目 [h(104 68H)]
103文字目 [ ( 32 20H)]
104文字目 [b( 98 62H)]
105文字目 [e(101 65H)]
106文字目 [a( 97 61H)]
107文字目 [n(110 6eH)]
108文字目 [s(115 73H)]
109文字目 [;( 59 3bH)]
110文字目 [.( 10 0aH)]
111文字目 [a( 97 61H)]
112文字目 [n(110 6eH)]
113文字目 [d(100 64H)]
114文字目 [ ( 32 20H)]
115文字目 [t(116 74H)]
116文字目 [h(104 68H)]
117文字目 [e(101 65H)]
118文字目 [n(110 6eH)]
119文字目 [ ( 32 20H)]
120文字目 [h(104 68H)]
121文字目 [e(101 65H)]
122文字目 [ ( 32 20H)]
123文字目 [a( 97 61H)]
124文字目 [t(116 74H)]
125文字目 [e(101 65H)]
126文字目 [ ( 32 20H)]
127文字目 [s(115 73H)]
128文字目 [o(111 6fH)]
129文字目 [m(109 6dH)]
130文字目 [e(101 65H)]
131文字目 [ ( 32 20H)]
132文字目 [r(114 72H)]
133文字目 [a( 97 61H)]
134文字目 [d(100 64H)]
135文字目 [i(105 69H)]
136文字目 [s(115 73H)]
137文字目 [h(104 68H)]
138文字目 [e(101 65H)]
139文字目 [s(115 73H)]
140文字目 [.( 46 2eH)]
141文字目 [.( 10 0aH)]

改行文字'\n'(10あるいは0xa)があるのがわかる。