Сортировка строк структуры 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>
Объяснение кода листинга программы
- Включаем заголовочный файл string.h, который содержит функции для работы со строками.
- Создаем функцию сортировки, которая будет принимать на вход указатель на массив строк и количество строк в массиве.
- Внутри функции сортировки объявляем статический массив, который будет использоваться внутри функции сортировки для временного хранения строк.
- Создаем переменную для хранения индекса, которая будет использоваться для обмена значениями в массиве строк.
- В цикле проходим по всем строкам массива, начиная с первой и до предпоследней.
- В каждой итерации цикла сравниваем текущую строку с предыдущей и, в зависимости от результата сравнения, меняем их местами или пропускаем текущую строку.
- После завершения цикла сортировки возвращаем 0.
- В основной функции программы объявляем массив строк и инициализируем его значениями.
- Вызываем функцию сортировки, передавая ей указатель на массив строк и количество строк в массиве.
- После завершения функции сортировки выводим отсортированный массив строк на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д