Can some one help me to :

How to Read integers stored in a text file in the following format :

26 52 23 41 19 61 54 4 19 95 84 25 55 22 
(integers delimted by a space.)

to be used for sorting later.

Have tried following code:

#include <stdio.h>
#include <conio.h>

void main()
{
        FILE *fp;
        int *x,i=0;
        int a,b;

        fp=fopen("file1.txt","r");
        if (fp==NULL)
        {
                printf("File Cannot be opened.\n");
        }
        fseek(fp,0L,2);
        a=ftell(fp);
        rewind(fp);
        fseek(fp,+1,0);
        b=ftell(fp);
        while (b<a)
        {
                fscanf(fp," %d ",x[i]);
                printf ("%2d - %d\n",i,x[i]);
                ++i;
                b=ftell(fp);
                //printf("ftell = %d y = %d\n",b,a); 
        }
        fclose(fp);       


}

Output (which is wrong, which is obvious):

 0 - 1735
 1 - 11552
 2 - 12576
 3 - 13111
 4 - 2613
 5 - 12576
 6 - 11552
 7 - 12576
 8 - 13617
 9 - 12853
10 - 8202
11 - 8242
12 - 8237
13 - 12849

Please help.

Manish

Edited 3 Years Ago by mike_2000_17: Fixed formatting

Rule 1) A pointer isn't an array. Just because you say int *x doesn't mean you can immediately use x as if it were an array. You need to allocate memory to it first.

Rule 2) main returns int.

Rule 3) Don't try to use the file positioning functions until you actually know what you're doing. Just read from the file and everything will work.

It's really as simple as this:

#include <stdio.h>

int main ( void )
{
  FILE *in;
  int list[50];
  int i;

  in = fopen ( "file1.txt", "r" );

  if ( in != NULL ) {
    for ( i = 0; i < 50; i++ ) {
      if ( fscanf ( in, "%d", list[i] ) != 1 )
        break;
    }

    for ( j = 0; j < i; j++ )
      printf ( "%d - %d\n", j, list[j] );

    fclose ( in );
  }

  return 0;
}

If you want the list to grow indefinitely to meet the contents of the file, you have no choice but to allocate and resize the memory for a pointer manually (assuming you really are using C even though you posted in the C++ forum).

This article has been dead for over six months. Start a new discussion instead.