2017-05-07 4 views
0

構造体を使用して複素数を作成しました。その結果、合計の結果が得られました。その後、ファイルをcomplextoplam.txtに保存しようとしました。「r」モードI 「W」モードとデータとcomplextoplam.txtに格納されたデータは予期せぬ無限ループを伴うファイル

10.000000 5.000000i 
    8.000000 9.000000i 
    Sum=18.000000+14.000000i 

テキストファイルのデータを記憶した後、私は、コンソール画面のデータと印刷を読みたいですが、エラーは、この中に発生します私がfscanfとEOFを使ってループしているときに、ループは終了せず、無限ループに向かいます。なぜ私のプログラムはそのように動作していますか?私はあなたの考えがうまくいくと思います私を改善する。

#pragma warning (disable :4996) 
#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 
#include <math.h> 
#include <ctype.h> 
#include <string.h> 
struct Complex { 
    double real; 
    double img; 
}; 
struct Complex c1, c2,c3; 
void Toplam(struct Complex c1, struct Complex c2) 
{ 
    c3; 
    c3.img = c1.img + c2.img; 
    c3.real = c1.real + c2.real; 
} 

int main() { 

    /*c1, c2; 
     printf("Write complex c1.\n"); 
     scanf("%lf %lf", &c1.real, &c1.img); 
     printf("Write complex c2.\n"); 
     scanf("%lf %lf", &c2.real, &c2.img); 
     Toplam(c1, c2); 
     printf("Sum=%lf + %lfi", c3.real, c3.img);*/ 
    //this part is used for only in "w" mode// 
    int i; 
    FILE *kp; 
    kp = fopen("complextoplam.txt", "r"); 
    if (kp == NULL) 
    { 
     printf("File opening error.\n"); 
     system("pause"); 
     exit(1); 
    } 
    printf("File opened correctfully.\n"); 
    while (fscanf(kp,"%lf %lf\n %lf %lf \n%lf %lf\n", &c1.real, &c1.img, 
        &c2.real, &c2.img,&c3.real, &c3.img) != EOF) 
    { 
     printf("%lf %lf %lf %lf %lf %lf", c1.real, c1.img, c2.real, c2.img, 
       c3.real, c3.img); 
    } 
    getch(); 
    return 0; 
} 
+0

、それは' EOF'を返しません。正常に解析された項目の数を返します。 – Barmar

+0

本当に 'Sum ='がファイルにありますか?あなたは 'fscanf()'形式のものはありません。 – Barmar

+0

'fscanf'の場合、'%lf'の 'i'も表示されません。 – manman

答えて

1

あなたfscanfコールでフォーマット文字列は、ファイルの形式と一致していません。このため、fscanfは、EOFではなく、正しく読み取られた値の数を返します。

は、この問題を解決するためには、次のようにあなたのフォーマット文字列を変更:ファイルデータが `fscanf`フォーマット文字列と一致しない場合"%lf %lfi\n%lf %lfi\nSum=%lf+%lfi"

+0

なぜコンパイラがそのように動作していますか?c1.real、c1.img、c2.real、c2.img、 c3.real、c3.img)を使用する代わりに、コードを短縮する方法はありますか。それらの部分。 – dozgunay

関連する問題