行番号をつけてファイル出力 <C言語>

fopne()でファイルをオープンします。
fnameが示すファイルを指定したモードでオープンします。
モードは、"r"でread、"w"でwrite、"a"でappend、"w+" と ”r+”でupdateです。
戻り値はFILE構造体のポインタを返します。オープンに失敗するとNULLを返します。

<書式>
#include<stdio.h>
FILE * fopen(char * fname, const char * mode)

    11:         FILE * fp = NULL;
    12:         fp = fopen(argv[1],"r");
    13:         if (fp == NULL){
    14:                 fprintf(stderr,"Can't opne File\n");
    15:                 return 1;
    16:         }

fgets()でfpが示すファイルストリームから改行、またはbsize - 1までの1行分の文字列をbuffが示す領域に読み込みます。
戻り値はbuffのポインタを返します。読み込みに失敗したりEOFを検出するとNULLを返します。

<書式>
#include<stdio.h>
char * fgets(char * buff, int bsize, FILE * fp)

    21:         while((fgets(buff,bsize,fp)) != NULL){
    22:                 printf("%6d:   %s", i++, buff);
    23:         }

fclose()でファイルをクローズします。
戻り値は成功時に0を返します。失敗したらEOFを返します。

<書式>
#include<stdio.h>
int fclose(FILE *fp)

    25:         if (fclose(fp) != 0){
    26:                 fprintf(stderr,"fclose error\n");
    27:                 return 1;
    28:         }

サンプルコード

     1:   # include<stdio.h>
     2:   # define bsize 256
     3:
     4:   int main(int argc, char *argv[]){
     5:
     6:         if (argc != 2){
     7:                 fprintf(stderr,"Usage: %s <filename>\n",argv[0]);
     8:                 return 1;
     9:         }
    10:
    11:         FILE * fp = NULL;
    12:         fp = fopen(argv[1],"r");
    13:         if (fp == NULL){
    14:                 fprintf(stderr,"Can't opne File\n");
    15:                 return 1;
    16:         }
    17:
    18:         int i = 1;
    19:         char buff[bsize];
    20:
    21:         while((fgets(buff,bsize,fp)) != NULL){
    22:                 printf("%6d:   %s", i++, buff);
    23:         }
    24:
    25:         if (fclose(fp) != 0){
    26:                 fprintf(stderr,"fclose error\n");
    27:                 return 1;
    28:         }
    29:
    30:         fp = NULL;
    31:
    32:         return 0;
    33:
    34:   }
    35:

実行結果



コメント

このブログの人気の投稿

Tomcatの環境構築

レトロパソコン(NEC PC-8001)が正常起動

レトロパソコン(NEC PC-8001)を動かしたいなあ