-------------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;
}