Сортировка строк структуры qsort - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. С помощью кода я читаю структуры из файла. Затем мне нужно отсортировать список по имени. Сортируется нормально, но компилятор пишет предупреждение. [Warning] passing arg 1 of `strcmp' from incompatible pointer type Подскажите, где я накосячил с указателями. Никак не могу понять. Если нужны доп данные, все вышлю. Спасибо!
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>
#define SP system("pause");
#define CP SetConsoleCP(1251); SetConsoleOutputCP(1251);
#define NEWLINE putchar('\n');
#define konec  system("pause"); return 0;
 
typedef struct complect
    {
        char *model_cpu[50];
        float hertz;
        int memory;
        int size_display;
        double price;       
    } computer_t;
 
int cmp_model(const void *a, const void *b)
{return strcmp( ((computer_t *)a)->model_cpu , ((computer_t *)b)->model_cpu );}
 
int main()
{       
        computer_t park[10];
        FILE *f;
        int i=0, num = 0;
        
        CP
        
        f = fopen("C:/price.dat", "rb");
        if(f == NULL) {printf("Невозможно открыть.\n"); return 1;}
        
        printf("Сколько структур прочитать? ");
        scanf("%d", &num);
        
        fread(park, sizeof(computer_t), num, f);
        qsort(park, num, sizeof(computer_t), cmp_model);
        
        for(i=0; i<num; i++)
        printf("%s %.2lf %d %d %.2lf\n"
        , park[i].model_cpu, park[i].hertz, park[i].memory, 
        park[i].size_display, park[i].price);
        fclose(f);

NEWLINE
konec   
}

Решение задачи: «Сортировка строк структуры qsort»

textual
Листинг программы
#include <string.h>

Объяснение кода листинга программы

  1. Включаем заголовочный файл string.h, который содержит функции для работы со строками.
  2. Создаем функцию сортировки, которая будет принимать на вход указатель на массив строк и количество строк в массиве.
  3. Внутри функции сортировки объявляем статический массив, который будет использоваться внутри функции сортировки для временного хранения строк.
  4. Создаем переменную для хранения индекса, которая будет использоваться для обмена значениями в массиве строк.
  5. В цикле проходим по всем строкам массива, начиная с первой и до предпоследней.
  6. В каждой итерации цикла сравниваем текущую строку с предыдущей и, в зависимости от результата сравнения, меняем их местами или пропускаем текущую строку.
  7. После завершения цикла сортировки возвращаем 0.
  8. В основной функции программы объявляем массив строк и инициализируем его значениями.
  9. Вызываем функцию сортировки, передавая ей указатель на массив строк и количество строк в массиве.
  10. После завершения функции сортировки выводим отсортированный массив строк на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы