Отсортировать строки! Где ошибка? - C (СИ)
Формулировка задачи:
Нужна помощь. Нужно написать код для сортировки строк, с клавиатуры вводится наименование города и популяция. Задача отсортировать в алфавитном порядке города. Вот сам код в СИ.
собственно вроде ошибка где то в функции sortTown, либо может неверно аргумент отправляю в функцию. Подскажите где ошибка пожалуйста.
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #include "struct.h"
- void inputTown(struct town*pt);
- void printTown(struct town*pt);
- void sortTown(struct town*pt);
- int main(int argc, char**argv)
- {
- struct town Towns[10];
- for(int i = 0; i < 10; i++){
- inputTown(&Towns[i]);
- }
- sortTown(&Towns);
- for(int i = 0; i < 10; i++){
- printTown(&Towns[i]);
- }
- getchar();
- return 0;
- }
- void inputTown(struct town*pt)
- {
- printf("Input netx town.\n");
- printf("Name: ");
- gets_s(pt->name, NAMELENGHT);
- printf("Population: ");
- scanf_s("%d", &pt->population);
- getchar();
- return;
- }
- void printTown(struct town*pt)
- {
- printf("town: %s, population:%d\n", pt->name, pt->population);
- }
- void sortTown(struct town*pt)
- {
- char tmp[80];
- char*ptr = tmp;
- for (int i = 0; i < NAMELENGHT - 1; i++) //сортировка выбором
- for (int j = i; j < NAMELENGHT; j++) {
- if (strcmp(pt[i].name, pt[j].name) > 0)
- {
- *ptr = pt[i].name;//[80]
- int x = pt[i].population;
- strncpy_s(pt[i].name, NAMELENGHT, pt[j].name, strlen(pt[j].name));
- pt[i].population = pt[j].population;
- strncpy_s(pt[j].name, NAMELENGHT, ptr, strlen(ptr));
- pt[j].population = x;
- }
- }
- }
Решение задачи: «Отсортировать строки! Где ошибка?»
textual
Листинг программы
- *ptr = pt[i].name; // 54 строка
Объяснение кода листинга программы
В данном коде происходит следующее:
- Строка 54: Переменная *ptr инициализируется значением pt[i].name.
- Это предполагает, что pt[i] является допустимым указателем на структуру или объект, и что у этой структуры или объекта есть член с именем
name
. - Значение pt[i].name будет копироваться в *ptr.
- Если pt[i] не является допустимым указателем или у него отсутствует член с именем
name
, это может вызвать ошибку во время выполнения. Код не содержит достаточной информации для определения, что именно вызывает ошибку. Необходимо проверить, является ли pt[i] допустимым указателем и есть ли у него член с именемname
.
- Это предполагает, что pt[i] является допустимым указателем на структуру или объект, и что у этой структуры или объекта есть член с именем
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д