我想对输入的城市名称进行排序,但下面的代码给了我,例如:
输入:
纽约 乔治敦 柏林
输出:
柏林 格约克 贝尔格敦
这是为什么?我当时正在考虑与 strcmp 进行比较并交换指针,但它似乎不起作用。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void sort(char *dummy);
void swap(char *first, char *second);
int i;
char *names[3];
char *temp;
int main(void) {
//get the names of the cities
puts("Enter names of cities");
for (i = 0; i < 3; i++)
{
names[i]=malloc(100);
fgets( names[i], 99, stdin);
}
//print entered names
for (i = 0; i < 3; i++)
{
printf("%s", names[i]);
}
sort(names);
//print sorted names
for (i = 0; i < 3; i++)
{
printf("%s", names[i]);
}
getch();
}
//sorting function
void sort(char *dummy)
{
for (i = 0; i < 2; i++) {
if (strcmp( &dummy[i], &dummy[i+1]) > 0) {
swap(&dummy[i], &dummy[i+1]);
}
}
}
//swapping function
void swap(char *first, char *second)
{
temp=second;
second=first;
first=temp;
}