Я принимаю данные от пользователя, чтобы продолжить работу с моей программой. Все работает отлично, пока я не попытаюсь ввести строку в двумерный массив cityName. Как только я ввожу строку, программа вылетает.
//dynamically allocate memory for user input (integers)
int *xOfCity = calloc(numOfCities, sizeof(int));
int *yOfCity = calloc(numOfCities, sizeof(int));
//dynamically allocate memory for user input (city names)
char **cityName = (char **) calloc(numOfCities, sizeof(char *));
for (int i = 0; i < numOfCities; i++)
cityName[i] = (char *) calloc(CITY_NAME + 1, sizeof(char));
int dxOfFront, dyOfFront;
//read in data from user
for (int i = 0; i < numOfCities; i++) {
scanf("%d", &xOfCity[i]);
if (xOfCity[i] > MAX_GRAPH || xOfCity[i] < MIN_GRAPH)
return ERROR;
scanf("%d", &yOfCity[i]);
if (yOfCity[i] > MAX_GRAPH || yOfCity[i] < MIN_GRAPH)
return ERROR;
for (int j = 0; j < CITY_NAME; j++)
scanf("%s", cityName[i][j]);
}
Чтобы быть уверенным, что проблема с 2D-массивом, я закомментировал его и запустил программу, взяв в качестве входных данных только целые числа, и программа работала нормально , Я попытался распределить массив другим способом, но, похоже, это тоже не сработало.
Зачем моей программе выбрасывать sh при вводе строки?