2種類のファイル入出力

1705 ワード

ファイルの入力と出力を利用するメリット:テストのたびに手動で入力する必要はありません.出力が多すぎて見えないようにします.
準備:debugの下に2つのファイルを作成します:input.txt(入力データを保存するファイル)output.txt(データを入力するファイル)
1.入出力リダイレクト
例:

#include <stdio.h>
#include <time.h>
#define MOD 100000
#define LOCAL
int main()
{
#ifdef LOCAL
	// , 
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
#endif
	int n, i, factorial = 1, s = 0, j;
	scanf("%d", &n);
	for(i = 1; i < n; i++)
	{
		factorial = 1;
		for(j = 1; j <= i; j++)
		{
			factorial = factorial * j % MOD;
		}
		s = (s + factorial) % MOD;
	}
	printf("%d
", s ); printf("Time Used = %.2lf
", (double)clock() / CLOCKS_PER_SEC); return 0; }

2つ目は、ファイルが開いているか閉じているかを利用して、リダイレクトしないことです.

#include <stdio.h>
#include <time.h>
#define MOD 100000
int main()
{
	FILE *fin, *fout;
	fin = fopen("input.txt", "rb");
	fout = fopen("output.txt", "wb");
	int n, i, factorial = 1, s = 0, j;
	fscanf(fin ,"%d", &n);
	for(i = 1; i < n; i++)
	{
		factorial = 1;
		for(j = 1; j <= i; j++)
		{
			factorial = factorial * j % MOD;
		}
		s = (s + factorial) % MOD;
	}
	fprintf(fout,"%d
", s ); fprintf(fout, "Time Used = %.2lf
", (double)clock() / CLOCKS_PER_SEC); fclose(fin); fclose(fout); return 0; }