行番号をつけてファイル出力 <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:
実行結果
コメント
コメントを投稿