今回はファイルから情報をとりこんだり、
ファイルへ情報を書き込んだりしてみましょう。
#include<stdio.h>
int main()
{
FILE *fp;
char a[20];
char buff[20];
memset(buff,'\0',sizeof(buff));
memset(a,'\0',sizeof(a));
fp=fopen("test.txt","r");
if(fp==NULL)
{
printf("ファイルが開けませんでした。\n");
return 1;
}
fgets(a,sizeof(a),fp);
strncpy(buff,a,strlen(a)-1);
printf("buff=%s\n",buff);
close(fp);
return 0;
}
まずは入力です。
頭からざっと説明しますと、、、
FILE *fp;
これはこのソースではファイルをつかいますよ!!っていう宣言です。
「*fp」は好きに名前をつけてかまいませんが、「*」はとっちゃだめです。
「*」に関しては、
8.ポインタで詳しく説明します。
fp=fopen("test.txt","r");
これで"test.txt"という名前のファイルを開きます。
「"r"」というのはreadモードでひらくと言う意味です。
他にも
「"w"」書き込み用
「"a"」追加書き込み用
などがあり、用途によって読み込み方が違うので注意しましょう。
if(fp==NULL)
{
printf("ファイルが開けませんでした。\n");
return 1;
}
これはファイルが開けなかったときのための
エラートラップです。
「fopen」は指定されたファイルが開けなかった場合、
「fp」に「NULL」をいれてくれます。
詳しくは、
ヘッダ&標準関数表を参照してください。
fgets(a,sizeof(a),fp);
これで、ファイルの中身を「"a"」にコピーします。
strncpy(buff,a,strlen(a)-1);
「strncpy」は「strcpy」の文字数限定バージョンで、
ここで「"a"」の最後の一文字をけずっています。
。。。なんでか??
「"a"」の最後には改行コードが入っているからです。
test.txtが一行しかなかったり、改行コードがはいってない場合は
この一文は不要です。
close(fp);
最後には必ずファイルを閉じます。
あけたら閉じる。出したらしまう。。。片付けの基本です。
ファイルに対しても一緒です。
必ず開いたファイルは閉じましょう。
最終更新:2007年02月05日 10:43