C ファイル入出力を使って | ある意味メモ帳がわり

ある意味メモ帳がわり

ブログの説明を入力します。

-------------list 1-----------------


#include <stdio.h>
#include <stdlib.h>

#define INFILE "c:\\temp\\c\\text.txt"
#define OUTFILE "c:\\temp\\c\\outtext.txt"

#define READ "r"
#define WRITE "w"


/*
10個の数値が並ぶファイルを読み取り、
それらの数値を倍にして
別のファイルに書き出す
最も基本形

ファイルの書式が悪かったりするとぶち落ち

*/



int main ()
{
int i, num;
FILE *infp, *outfp;

/*入力ファイルのオープン*/
infp = fopen(INFILE, READ);
if (infp == NULL) {
printf("入力ファイルのオープンに失敗しました\n");
exit(1);
}

/*出力ファイルのオープン*/
outfp = fopen(OUTFILE, WRITE);
if (outfp == NULL) {
printf("出力ファイルのオープンに失敗しました\n");
exit(1);
}

/*読み込んだ値を倍にして書き出す*/
for (i = 0; i < 10; i++) {
fscanf(infp, "%d", &num);
fprintf(outfp, "%d\n", num * 2);
}

/*ファイルのクローズ*/
fclose(infp);
fclose(outfp);

return 0;
}





-------------------------list 2

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define READ "r"
#define WRITE "w"

#define BUFFER 4096


/*-----------------------------------------------
テキストファイルを読み取って
標準出力に出力しつつ、

ファイルにも書き出す
読み取りにはfgetsを使ってオーバーフローをなくすバージョン

エディタ風に行番号を表示するオマケ

-------------------------------------------------*/


int main (int argc, char* argv[]) {
FILE *infp, *outfp; //ファイルポインタ
char readline[BUFFER]; //文字列バッファ
int row; //行番号を表示するためのカウンタ


/*引数の確認*/
if (argc <= 2){
printf ("no arguments error!!");
exit(EXIT_FAILURE);
}

/*引数の一つ目は入力ファイル名とみなしてファイルを開く*/
if (( infp = fopen(argv[1], READ)) == 0 ) {
printf("input file open error!!\n");
exit(EXIT_FAILURE);
}


/*引数の二つ目は出力ファイル名とみなしてファイルを開く*/
if (( outfp = fopen(argv[2], WRITE)) == 0 ) {
printf("output file open error!!\n");
exit(EXIT_FAILURE);
}

row = 0;
/*ファイルを一行ずつ読み込み、文字列バッファに格納する*/
/*文字列バッファを標準出力と出力ファイルに同時に書き出す*/

while(fgets(readline, BUFFER, infp) != 0) {
row++;

printf("%4d|%s",row, readline);
fprintf(outfp, "%4d|%s",row, readline);
}

printf("[EOF]\n");
fprintf(outfp,"[EOF]\n");

/*ファイルを閉じる*/
fclose(infp);
fclose(outfp);

return 0;
}