Написал программу, которая должна создавать и считывать 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 возрастает бесконечно.