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