構造体を使用して複素数を作成しました。その結果、合計の結果が得られました。その後、ファイルを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;
}
、それは' EOF'を返しません。正常に解析された項目の数を返します。 – Barmar
本当に 'Sum ='がファイルにありますか?あなたは 'fscanf()'形式のものはありません。 – Barmar
'fscanf'の場合、'%lf'の 'i'も表示されません。 – manman