Здесь есть как минимум 2 проблемы:
Первая проблема
Функция findStation
имеет несколько проблем, это исправленная версия:
struct station *findStation(struct station *stations, char *station_name)
{
//returns a pointer to the station with the name station name in the list stations
printf("h1");
while ((stations != NULL))
{
if (strcmp(stations->station, station_name) == 0) //<< use == instead of !=
// read the documentation of `strcmp`
{
printf("%s\n", stations->station);
printf("%s\n", station_name);
return stations; //<< station found, return it
}
}
return NULL; //<< no station found => return NULL
}
Не усложняйте, чем нужно.
Вторая задача
char *station_name;
должна быть char station_name[100];
.
В строке scanf(" %s", station_name)
, station_name
должен быть указатель на буфер, куда должна идти ваша строка.char *station_name;
объявляет указатель, но он нигде не указывает, тогда как char station_name[100];
объявляет массив из 100 символов, и в этом случае station_name
является допустимым указателем на ваш буфер.
Прочитайте главу, посвященную указателям итот, который имеет дело со строками в вашей книге C texgt.