Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- void sortsel (char **strings, int cnt, int sel);
- int main (int argc, char** argv)
- {
- int cnt, sel, a, b;
- char **strings;
- FILE *fin = fopen("strings.txt","r");
- //кол-во строк
- while(!feof(fin) && !ferror(fin))
- {
- fscanf(fin, "%*[^\n]%*c");
- cnt++;
- }
- rewind(fin);
- if (!(strings=(char **)malloc(cnt*sizeof(char *))))
- {
- puts("Не удалось выделить память для записи строк.");
- exit(1);
- }
- else
- for (a=0; a<cnt; a++)
- if (!(strings[a]=(char *)malloc(200*sizeof(char))))
- {
- puts("Не удалось выделить память для записи строк.");
- exit(1);
- }
- printf("Строки исходного файла:\n------------------------------------\n");
- for (b=0; b<cnt; b++)
- {
- fgets(strings[b], 200*sizeof(char), fin);
- printf("%s", strings[b]);
- }
- printf("\nВведите количество строк для выборки: ");
- do {
- scanf("%d", &sel);
- } while (sel<=0);
- if (sel<=cnt)
- sortsel(strings, cnt, sel);
- else
- {
- printf("Недостаточно строк для выборки!\nВыборка из %d строк: ", cnt);
- sortsel(strings, cnt, cnt);
- }
- }
- void sortsel (char **strings, int cnt, int sel)
- {
- system("clear");
- int a, b, c;
- int swap;
- char t[200];
- for(a=0;a<cnt-1;++a)
- {
- swap=0;
- c=a;
- strcpy(t, strings[a]);
- for(b=a+1;b<cnt;++b)
- {
- if(strlen(strings[b])<strlen(t))
- {
- c=b;
- strcpy(t, strings[b]);
- swap=1;
- }
- }
- if(swap)
- {
- strcpy(strings[c], strings[a]);
- strcpy(strings[a], t);
- }
- }
- printf("Последняя строка в выборке: %d\n%s", sel, strings[sel]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement