掲示板利用宣言

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

 私は

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

掲示板2

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

No.25327

ファイル読み込みに関する質問です。
投稿者---カゲロウ7(2006/01/14 15:19:19)


読み込みに関する質問です。
電卓を作ろうと思っているのですがうまくいきません。

読み込むファイルは

1
+
2
-
3

というものです。以下のプログラムで読み込もうとしました。

#include<stdio.h>
#include<stdlib.h>

int N,tasukazu;
char enzansi;
int main(void){

        FILE *fin=fopen("test.txt","r");
        
        if(fin==NULL){
        printf("fopen失敗\n");
        exit(EXIT_FAILURE);
        }
    
    fscanf(fin,"%d",&N);//元の数(足される数)を確保

    printf("元の数%d\n",N);//正しく読み込まれているかチェック

    
    while ( 1 ) {
        fscanf(fin, "%c%d",&enzansi,&tasukazu);//演算子とたす数を読み込み、その都度計算

        //keisan();←今は読み込み確認段階なので、計算はしない。

        printf("演算子→%c たす数→%d\n",enzansi,tasukazu);//正しく読み込まれているかチェック

        if ( feof(fin) ) {
            break;
        }
        
    }
}
このプログラムの意図は、
まず『1』を元の数(足される数)Nとし、まず先頭の一文字だけ読み込みます。
そしてそれからループに入り、続きを『演算記号→たす数』の順に二個ずつ読み込み、演算記号をif文で判別して計算する、というものです。

まずこの時点で、fscanfを二回使った時、途中から(一回目で読み終わった次ところ、今回なら『+』から)読み込んでくれるのでしょうか?

また今回読み込んだ結果を表示したところ、表示内容が理解できなかったので質問しました。質問が分かりにくくて申し訳ありません。
何卒お願いします

表示結果は

元の数1
演算子→
たす数→0
演算子→
たす数→2
演算子→
たす数→2
演算子→
たす数→3
演算子→
たす数→3

といった具合で、なんだかチンプンカンプンです。charが全く読み込めていないのか、二回fscanfを使ったことが原因なのか・・。しかし、少し改善してfscanfを一回にしても(whileの上の二文を削除しました)結局キャラ文字(演算子の読み込み)が上手くいきません。
もちろんその時はループ内の読み込む順を
『%c%d』(←始めの数をNとしたく、上手く行っていれば『1』の次の文字『+』からループで読み込み始めるので記号→数字の順)でなく、
『%d%c』(←元の数をNとしない為、ループ内で始めに読み込む物はint型になる)と訂正しました。

また良かったら、ファイル読み込み型電卓の元となるソースを持っている方がいましたら、参考にさせてくださると嬉しいです。お願いします。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイル読み込みに関する質問です。 25330 επιστημη 2006/01/14 15:31:52


No.25330

Re:ファイル読み込みに関する質問です。
投稿者---επιστημη(2006/01/14 15:31:52)


>演算子→
>たす数→0
>演算子→
>たす数→2

ってことは、ファイルの中にある「改行」を %c で読み込んじゃってますね。



この投稿にコメントする

削除パスワード

No.25331

Re:ファイル読み込みに関する質問です。
投稿者---カゲロウ7(2006/01/14 15:40:05)


あ、なるほど!ありがとうございます。
ということは、fscanfを二回使っても問題なく続きの部分から読み込んでくれる、ということなのですか?


この投稿にコメントする

削除パスワード

No.25332

Re:ファイル読み込みに関する質問です。
投稿者---επιστημη(2006/01/14 15:40:46)


>ということは、fscanfを二回使っても問題なく続きの部分から読み込んでくれる、ということなのですか?

そんなもん、ちょいちょいと実験できるでしょ?



この投稿にコメントする

削除パスワード

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