Człowieku, ty się nie uczysz niczego!
Powtarzam raz jeszcze:
-
Zapoznaj się z pojęciem formatowania kodu: http://4programmers.net/Forum/998482
-
Nie nadużywaj inkrementacji przyrostkowej: http://4programmers.net/Forum/1101404
for(int i=0;i<n;++i)
- zadziała tak samo jak for(int i=0;i<n;i++)
ale uchroni przed ewentualnymi problemami
- Co ma się stać jak w pliku będzie mniej niż 10 par?
- Lepiej stwórz strukturę bo inaczej użycie qsort będzie nieco bardziej skomplikowane.
Powinno być coś w stylu:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct { int a,b; } Pair;
typedef int CMP(const void *a,const void *b);
int cmp(const Pair *p,const Pair *q)
{
int ret=((p->a)>(q->a))-((p->a)<(q->a));
return ret?ret:(((p->b)>(q->b))-((p->b)<(q->b)));
}
void fatal(int bad,const char *err)
{
if(!bad) return;
fprintf(stderr,"%s\n",err);
exit(bad);
}
int main(int argc, void *argv[])
{
Pair tab[100];
const size_t size=sizeof(tab)/sizeof(*tab);
size_t count,i;
FILE *fin;
fatal(argc<2,"Nie podano pliku do odczytu");
fin=fopen(argv[1],"r");
fatal(!fin,"Blad otwarcia pliku do odczytu");
for(count=0;(count<size)&&(fscanf(fin,"%d%d",&tab[count].a,&tab[count].b)==2);++count) {}
fclose(fin);
qsort(tab,count,sizeof(Pair),(CMP*)cmp);
for(i=0;i<count;++i) printf("%d %d\n",tab[i].a,tab[i].b);
return 0;
}