■ファイル入力テスト
ソースファイルはこちら
#include <stdio.h>
#define NUM 256
int main(void)
{
FILE *fp;
char string[NUM];
char s1[NUM],s2[NUM];
//ファイルオープン
fp = fopen("inputfile.txt","r");
//オープン成否判定
if(fp == NULL){
printf("ファイルが開けませんよ?\n");
return 1;
}
printf("ファイル読み出し開始\n");
//ファイル読み出し
while(fgets(string, NUM, fp) != NULL){
printf("%s", string);
}
printf("ファイル読み出し終了\n");
//現在位置(どこから読み込むか)を先頭に戻す
fseek(fp, 0, 0);
printf("二度目のファイル読み出し開始\n");
//ファイル読み出し2
while(fscanf(fp, "%s %s", &s1, &s2) != EOF){
printf("名:%s 姓:%s\n", s1, s2);//fscanfの場合最後の改行は空白に変換されるらしい
}
printf("二度目のファイル読み出し終了\n");
//ファイルクローズ
fclose(fp);
return 0;
}
#define NUM 256
int main(void)
{
FILE *fp;
char string[NUM];
char s1[NUM],s2[NUM];
//ファイルオープン
fp = fopen("inputfile.txt","r");
//オープン成否判定
if(fp == NULL){
printf("ファイルが開けませんよ?\n");
return 1;
}
printf("ファイル読み出し開始\n");
//ファイル読み出し
while(fgets(string, NUM, fp) != NULL){
printf("%s", string);
}
printf("ファイル読み出し終了\n");
//現在位置(どこから読み込むか)を先頭に戻す
fseek(fp, 0, 0);
printf("二度目のファイル読み出し開始\n");
//ファイル読み出し2
while(fscanf(fp, "%s %s", &s1, &s2) != EOF){
printf("名:%s 姓:%s\n", s1, s2);//fscanfの場合最後の改行は空白に変換されるらしい
}
printf("二度目のファイル読み出し終了\n");
//ファイルクローズ
fclose(fp);
return 0;
}
読み込むファイルはこれ
命 大雪
板 かまぼこ
だんご 笹
板 かまぼこ
だんご 笹
実行結果はこれ
ファイル読み出し開始
命 大雪
板 かまぼこ
だんご 笹
ファイル読み出し終了
二度目のファイル読み出し開始
名:命 姓:大雪
名:板 姓:かまぼこ
名:だんご 姓:笹
二度目のファイル読み出し終了
命 大雪
板 かまぼこ
だんご 笹
ファイル読み出し終了
二度目のファイル読み出し開始
名:命 姓:大雪
名:板 姓:かまぼこ
名:だんご 姓:笹
二度目のファイル読み出し終了
fscanfは嫌われているみたいね。
扱い方が独特らしい。
あとエラー処理が面倒くさくなるみたい。
0 件のコメント:
コメントを投稿