#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <limits.h>
#include <signal.h>

void ctlC_end(int sig);

void main(int ac,char *as[])
{
	FILE *fp;
	int pts,size;
	int count;
	int i;
	int key;
	signal(SIGINT,ctlC_end);
	puts("ファイル　ＷＲＩＴＥ！　　Ｖ１．０Ｌ１０");
	printf("\t\t\t\tCopylight \x1b[%dmRED SCORPION\x1b[%dm\n\n",31,0);
	if(ac!=5)
	{
		fputs("\aパラメーターの指定が違います。\n",stderr);
		puts("強制終了しました。");
		_exit(2);
	}
	pts=atoi(as[2]);
	size=atoi(as[3]);
	count=atoi(as[4]);
	if(count>INT_MAX)
	{
		fputs("\a書き込む回数の値が、制限を越えています。\n",stderr);
		puts("強制終了しました。");
		_exit(2);
	}
	printf("\n\n書き込むファイル名\t%s\n書き込むべき値\t\t%d\n"
				"書き込むサイズ\t\t%dバイト\n書き込む回数\t\t%.f回\n"
					"ファイル総容量\t\t%dバイト\n\n",
						as[1],pts,size,count,size*count);
	while(1)
	{
		printf("以上でよろしいですか？(Y/N) ");
		key=_getche();
		putchar('\n');
		if(key=='N'||key=='n')
			exit(0);
		else if(key=='Y'||key=='y')
			break;
		puts("正しく入力してください。");
	}
	if((fp=fopen(as[1],"wb"))==NULL)
	{
		perror("\aファイルエラー発生");
		_exit(2);
	}
	puts("ファイルオープン");
	puts("ファイル書き込み中");
	for(i=0;i<count;i++)
	{
		fwrite(&pts,size,1,fp);
		if(ferror(fp))
		{
			perror("\aファイルエラー発生");
			printf("実際に書き込めたバイト数 %dバイト",ftell(fp));
			fclose(fp);
			puts("ファイルクローズ");
			puts("強制終了しました。");
			_exit(2);
		}
	}
	puts("ファイルクローズ");
	fclose(fp);
	puts("正常終了しました。");
	exit(0);
}

void ctlC_end(int sig)
{
	puts("Contrl-Cキーが入力されました。\n処理を中止します。");
	puts("ファイルがオープンされている場合はクローズします。");
	exit(1);
}

