I'm a beginner at C and I'm currently trying to input a string and 10 integers from a file, and then be able to sort them by the string in ascending order.
The file looks like this (first string is a place, the next 10 integers are distances)(random numbers I picked by the way :P)
London 0 23 12 89 456 123 46 732 345 123
Bath 23 0 46 234 123 46 89 234 567 90
The distances are relative to each other....
ie.. London to Bath would be 23 km, which can be read from column 2 on line 1 or first column on line 2
Now, I can easily input the files and print them using the below code (part of a function) and then using 2 for loops to print them out.
Furthermore, I can easily sort the strings in ascending order by the following code:
int i, j;
printf("Please enter the filename of the input file:");
sscanf(line,"%s%c\n", filename, &rtn);
openFile = fopen(filename, "r");
if (openFile == NULL)
puts("Error Opening File");
for (i = 0; i < 10; i++)
fscanf(openFile, "%s", &theArray2[i]);
for (j = 0; j < 10; j++)
fscanf(openFile, "%d", &theArray[i][j]);
BUT... I can't get the integers as described at the beginning of this thread to follow with the strings in order. I've tried using structs (like the one below) using fread in a for loop but i can't get that to work either!
int comp(const void *str1, const void *str2)
return strcmp(str1, str2);
void sortArray(char theArray2)
qsort(theArray2, 10, sizeof(theArray2), comp);
I've tried a load of things... Just wondering what I can do to solve this problem!!
Hope you can help,