アットウィキロゴ
今回はファイルから情報をとりこんだり、
ファイルへ情報を書き込んだりしてみましょう。

#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