我想对输入的城市名称进行排序,但下面的代码给了我,例如:
输入:
纽约 乔治敦 柏林
输出:
柏林 格约克 贝尔格敦
这是为什么?我当时正在考虑与 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;
}