I am currenty writing a program that needs to read in an unknown number of integers from a file and sort them using selection sort (with a max 100,000 integers). Here is my code so far:
Code:
#include <stdio.h>
void selectionsort ( int x[], int size ) ;
int main ( int argc, char *argv[] ) {
int x[100000], i ;
FILE *fin = fopen ( argv [1], "r" ) ;
for ( i = 0 ; i < 100000 ; i++ ) {
fscanf ( fin, "%d", &x[i] ) ;
}
selectionsort ( x, i ) ;
printf ( "\nThe first five sorted numbers are: %d %d %d %d %d\n", x[0], x[1], x[2], x[3], x[4] ) ;
printf ( "The last five sorted numbers are: %d %d %d %d %d\n\n", x[i-5], x[i-4], x[i-3], x[i-2], x[i-1] ) ;
fclose ( fin ) ;
return 0 ;
}
void selectionsort ( int x[], int size ) {
int i, j, min_index, temp ;
for ( i = 0 ; i < size - 1 ; i++ ) {
min_index = i ;
for ( j = i + 1 ; j < size ; j++ ) {
if ( x[j] < x[min_index] ) min_index = j ;
}
temp = x[i];
x[i] = x[min_index] ;
x[min_index] = temp ;
}
}
Now my question is, how would I go about stopping the for-loop in main when fscanf starts scanning just blanks. I tried adding " if ( x[ i ] == ' ' ) break ; " after the fscanf but it doesn't work. What would I need to add so it stops scanning the file when it runs out of numbers?
Thank you very much