Показать сообщение отдельно

  #3  
Старый 13.05.2010, 14:54
Napas
Новичок
Регистрация: 30.11.2008
Сообщений: 15
С нами: 9181428

Репутация: 16
По умолчанию

пипл, помогите плиз на си накодить следующую штуку
Отсортировать строки файла сначала по длине, а затем строки равной длины в алфавитном порядке, результат вывести в файл

в алфавитном порядке уже нашел как:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define MAXLINE 4096
#define IFNAME "in.txt"
#define OFNAME "out.txt"
 
int scmp(const void *p1, const void *p2)
{
    const char *s1, *s2;
 
    s1 = * (char **) p1;
    s2 = * (char **) p2;
    return strcmp(s1, s2);
}
 
int main(void)
{
    FILE *ifp, *ofp;
    char *lineptr[MAXLINE];
    char s[MAXLINE];
    int i, nl;
 
    ifp = fopen(IFNAME, "r");
    if(ifp == NULL || (ofp = fopen(OFNAME, "w")) == NULL) {
        perror("fopen");
        return -1;
    }
 
    for(i = 0; i < MAXLINE; ) {
        if(fgets(s, sizeof(s), ifp) == NULL)
            break;
        if(*s != '\n')
            lineptr[i++] = strdup(s);
    }
 
    nl = i;
    qsort(lineptr, nl, sizeof(char *), scmp);
 
    for(i = 0; i < nl; i++) {
        fprintf(ofp, "%s", lineptr[i]);
        free(lineptr[i]);
    }
    fclose(ifp);
    fclose(ofp);
    return 0;
}
осталось первую часть реализовать с меня 5 wmz
 
Ответить с цитированием