Solved

Reading  a large number of floating point data into a dynamically allocated 2 dimensional variable

Posted on 2001-06-24
3
185 Views
Last Modified: 2010-04-02
I wrote a very very simple program to write 40000*84 floating point data into a file and then try to retrieve it back into a 2 dimensional dynamically allocated variable.

#include <stdlib.h>
#include <stdio.h>
#define TOTAL_TRAIN     40000
#define TOTAL_FEATURE     84

void main()
{
     FILE* ftest;
     ftest=fopen  
        ("C:\\windows\\desktop\\train.txt","w");
     if(ftest==NULL)     exit(0);
     
     float num=0.0;
     for(long i=0; i<(TOTAL_TRAIN*TOTAL_FEATURE); i++)
     {
          num=num+1.2;
          fprintf(ftest,"%f\n",num);
     }
     fclose(ftest);
     printf("file write done");
     
     FILE* fsort;
     long total=TOTAL_TRAIN;
     fsort=fopen
        ("C:\\windows\\desktop\\train.txt","r");
     if(fsort==NULL)     exit(0);
     
     float** features=new float* [TOTAL_TRAIN];
     for(i=0; i<TOTAL_TRAIN; i++)
          features[i]=new float [TOTAL_FEATURE];
     
     for(i=0; i<TOTAL_TRAIN; i++)
     {
          printf("%d\n",i);
          for(int j=0; j<TOTAL_FEATURE; j++)
          {              
          fscanf(fsort,"%f",&features[j][i]);
          }
     }
     
     fclose(fsort);

     printf("All features had been loaded\n");
       
        for(i=0; i<TOTAL_TRAIN; i++)
     delete [] features[i];
     delete[] features;
}
 
Writing into a file is not a problem but when I try to retrieve it back only 750*84 out of 40000*84 samples can be retrieved.
Try to run this program. If any one can find any solution can you inform me as soon as possible.

Is it due to memory problem. 40000*84*4(float point data size is 4bytes)=13.44Mbyte. I have a 64Mbyte of SDRAM, Pentium 3 600Mhz and 14Gbyte of HDD.
0
Comment
Question by:tiagrajah
  • 2
3 Comments
 
LVL 3

Accepted Solution

by:
elcapitan earned 30 total points
Comment Utility
You have access violation.
Replace the line: fscanf(fsort,"%f",&features[j][i]);
with the line: fscanf(fsort,"%f",&features[i][j]);

--EC--
0
 
LVL 22

Expert Comment

by:nietod
Comment Utility
alcapitan, you must have great eyes, or a much better font than I do!  :-)

Out of curiosity, was this posted as a comment or answer?
0
 
LVL 3

Expert Comment

by:elcapitan
Comment Utility
Thanks,
I posted it as comment

--EC--
0

Featured Post

Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
Introduction This article is the first in a series of articles about the C/C++ Visual Studio Express debugger.  It provides a quick start guide in using the debugger. Part 2 focuses on additional topics in breakpoints.  Lastly, Part 3 focuses on th…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now