Excell
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору akaGM ой, точно... надо же num=i; конечно!!! спасибки Добавлено: что-то я ковыряюсь и ковыряюсь, а сортировка, что-то не работает и не работает, прога печатает слова на экран, но не отсортированные, вот я другую прогу написал, с использование указателя на функцию, результат тот же Код: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #define size 200 void sort (char *[], int, int (*cmp)(char *, char *)); int cmplen (char *, char *); void main (int argc, char *argv[]) { char buf[size], *str[100]; int i,num; FILE *in; if (argc<2) { puts("Слишком мало параметров!"); getch(); exit(1); } in=fopen(argv[1],"r+b"); if (in == NULL) { printf ("File %s is not exist!",argv[1]); getch(); exit(1); } i=0; while (fgets(buf,size-1,in) != NULL) { str[i]=(char*)malloc(strlen(buf)+1); strcpy(str[i],buf); i++; } num=i; sort(str,i,&cmplen); for (i=0;i<num;i++) printf ("%s\n",str[i]); getch(); } void sort (char *s[], int n, int (*cmp)(char *, char *)) { char *tmp; int i,j,mm; for (i=n-1;i>=1;i--) { mm=0; for (j=1;j<=i;j++) if ((*cmp)(s[j],s[mm])>0) mm=j; tmp=s[i]; s[i]=s[mm]; s[mm]=tmp; } } int cmplen(char *s1, char *s2) { return (strlen(s1)-strlen(s2)); } | Добавлено: сортировка по возрастанию длины строки | Всего записей: 1554 | Зарегистр. 31-08-2002 | Отправлено: 16:26 02-02-2005 | Исправлено: Excell, 19:04 02-02-2005 |
|