Написал программу, которая должна создавать и считывать float файл, но почему-то вместо того, чтоб считывать, программа входит в бесконечный цикл... Может, кто-нибудь знает в чём дело?
Код:
#include <assert.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
main()
{
FILE * fp;
float p,q,y;
int i=0;
int n=1;
clrscr();
fp=fopen("data-float.dat","w+");
if (fp==NULL)
{
printf("Cannot create file\n");
return 0;
}
float *temp;
float *array;
temp = new float [n];
assert(temp!=0);
array = new float [n];
assert(array!=0);
printf("Insert float numbers. To end press 'e'\n");
for (;;)
{
p = scanf("%f\n",&q);
if (p==0)
{
break;
}
fprintf(fp,"%f\n",q);
}
fclose(fp);
fp=fopen("data-float.dat","r");
if (fp==NULL)
{
printf("Cannot open the file\n");
return 0;
}
while (!feof(fp))
{
fscanf(fp,"%.4f",&y);// вот здесь программа отказывается читать из файла
array[i]=y; // и естественно, не передаёт никакого значения в array[i]
i++;
for (int j=0; j<i; j++)
{
temp[j]=array[j];
}
delete []array;
array = new float [i];
assert(array!=0);
for (j=0; j<i; j++)
{
array[j]=temp[j];
}
delete []temp;
temp = new float [i];
assert(temp!=0);
}
for(int j=0; j<i; j++)
{
printf("%f5.2 \n",array[j]);
}
fclose(fp);
delete []array;
delete []temp;
getch();
return 0;
}
Там, где программа не хочет читать, смотрел из-под дебаггера - значение y как далось программой из мусора, так и остаётся, а i возрастает бесконечно.