|
>はじめまして、あらいぐまと言う者です。
>以前からここのサイトでC言語を勉強させてもらっていますが書き込みは
>はじめてです。
>
>いま、自分はファイル入出力の項目を勉強しています。
>そこで、皆さんにご質問したいのですが、
>例えば、入力ファイルにランダムに1〜10までの数字が入力してあった
>として、その入力ファイル中の最大値や中間値だけを出力ファイルに書き込む
>ためにはどうすればいいのでしょうか?
>ポインタを使ってみてはどうか?とか、fputcで一文字ずつ読み込んでいって
>1つずつ比較できないか?などいろいろ考えてはみたのですが漠然とした
>ままでプログラムをつくることができません。
>皆さん、どうかお教えください。
>
#include <stdio.h>
#include <stdlib.h>
FILE *fileOpen(char *,char *);
void getMaxMin(char *,int *,int *);
int main(void)
{
FILE *in_fp;
FILE *out_fp;
char line[256];
int min = 999;
int max = -999;
/*入出力ファイルオープン処理*/
in_fp = fileOpen("c:\\in.txt","r");
out_fp = fileOpen("c:\\out.txt","w");
while(fgets(line,256,in_fp) != NULL){
/*最大値、最小値を求める*/
getMaxMin(line,&max,&min);
}
/*結果出力処理*/
fprintf(out_fp,"max = %d\n",max);
fprintf(out_fp,"min = %d\n",min);
/*ファイルクローズ処理*/
fclose(in_fp);
fclose(out_fp);
return 0;
}
FILE *fileOpen(char *p_fileName,char *p_mode)
{
FILE *fp;
fp = fopen(p_fileName,p_mode);
if(fp == NULL){
fprintf(stderr,"ファイル[%s]を開くことができませんでした。\n",p_fileName);
exit(1);
}
return fp;
}
void getMaxMin(char *p_line,int *max,int *min)
{
/*最大値取得処理*/
if(atoi(p_line) > *max){
*max = atoi(p_line);
}
/*最小値取得処理*/
if(atoi(p_line) < *min){
*min = atoi(p_line);
}
}
|