掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板2

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.25134

ファイル操作の読み込みに関する質問です。
投稿者---カゲロウ7(2006/01/08 21:38:40)


while(!(feof(fin))){
fscanf(fin, "%d",&a);
}
で、ファイルの数字等を読み込もうと思っているのですが、
最後の一回が余計に繰り返されてしまいます。
例えば

1
13
45
67

と読み込んだときは

1
13
45
67
67 ←余計

となってしまいます。

どのように訂正したらよいでしょうか?お願いします!



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイル操作の読み込みに関する質問です。 25135 επιστημη 2006/01/08 21:44:01


No.25135

Re:ファイル操作の読み込みに関する質問です。
投稿者---επιστημη(2006/01/08 21:44:01)


>で、ファイルの数字等を読み込もうと思っているのですが、
>最後の一回が余計に繰り返されてしまいます。

省略しすぎ。
出力部が欠落しているので判断できません。
コードを提示してください。



この投稿にコメントする

削除パスワード

No.25136

Re:ファイル操作の読み込みに関する質問です。
投稿者---カゲロウ7(2006/01/08 21:56:51)


すみません。
#include<stdio.h>
#include<stdlib.h>

int a;

int main(void){

FILE *fin=fopen("test.txt","r");

if(fin==NULL){
printf("fopen失敗\n");
exit(EXIT_FAILURE);
}

while(!(feof(fin))){
fscanf(fin, "%d",&a);
printf("%d\n",a);
}
}

というソースで、
読み込みファイルは、windows『メモ帳』を用いたテキストファイルで、
ファイル名は「test.txt」です。中身は

3 4 3
7 5 3

といったものです。これを上記のプログラムで読み込み&表示すると、

3
4
3
7
5
3
3 ←

となってしまいます。
分かりにくい質問で申し訳ないです。






この投稿にコメントする

削除パスワード

No.25138

Re:ファイル操作の読み込みに関する質問です。
投稿者---επιστημη(2006/01/08 22:08:12)


> while(!(feof(fin))){
>  fscanf(fin, "%d",&a);
>  printf("%d\n",a);
> }

feof()によるEOF判定の位置がまずい。
fscanfの直後に置くべし。

 while ( 1 ) {
  fscanf(fin, "%d",&a);
  if ( feof(fin) ) break;
  printf("%d\n",a);
 }



この投稿にコメントする

削除パスワード

No.25139

Re:ファイル操作の読み込みに関する質問です。
投稿者---カゲロウ7(2006/01/08 22:23:10)


ありがとうございます!
とても参考になりました!また何か機会があったら宜しくお願いします!



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧