Вопрос
Итак, я пытался закодировать двухэтапную программу, которая имеет строку (постоянная строка. Она задана) и выполняет:
- Найтиэлементы, начинающиеся с указанной буквы,
- Сортировка элементов в этой строке по алфавиту.
Задача
Мне нужна помощь со второй частью моей программыпотому что с первой частью все в порядке.Я должен увидеть города в алфавитном порядке , когда я выполню свой код.Но вместо этого я вижу эту ерунду.
Я - полный нуб, и у меня есть проблемы в каждом предмете, связанном с манипуляциями со строками / символами.Поэтому любая помощь о чем-либо будет оценена.
Вот мой код:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void sortStartwB(const char strSehir[]);
void sortCities(const char strSehir[]);
int main()
{
const char strSehir[100] = "Bursa Yozgat Canakkale Balikesir Adana Eskisehir Bilecik";
sortStartwB(strSehir);
sortCities(strSehir);
return 0;
}
void sortStartwB(const char strSehir[])
{
char strNew[100];
strcpy(strNew, strSehir);
char *ptrSehir;
char strBsehir[50] = {};
ptrSehir = strtok(strNew, " ");
while (ptrSehir != NULL)
{
if (strncmp(ptrSehir, "B", 1) == 0)
{
strcat(strBsehir, ptrSehir);
strcat(strBsehir, " ");
}
ptrSehir = strtok(NULL, " ");
}
printf("\nb ile baslayan sehirler : \n%s\n", strBsehir);
}
void sortCities(const char strSehir[])
{
char strFunc[100];
char *strSorted[100];
int i = 0;
char temp[50];
strcpy(strFunc, strSehir);
strSorted[i]=strtok(strFunc, " ");
while (strSorted[i] != NULL)
{
strSorted[++i] = strtok(NULL, " ");
}
for (int j=0; j<6; j++)
{
for (int k=j+1; k<7; k++)
{
if (strcmp(strSorted[j], strSorted[k]) > 0)
{
strcpy(temp, strSorted[j]);
strcpy(strSorted[j], strSorted[k]);
strcpy(strSorted[k], temp);
}
}
}
for (int x=0; x < 7; x++)
{
printf("\n%s", strSorted[x]);
}
}
Извините за плохую инициализацию переменных, а также за написание материала на неанглийском, ноэтот кусок кода должен быть моим рабочим листом, а английский не мой родной.Мир