入力された都市名を並べ替えたいのですが、以下のコードは次のようになります。
入力:
ニューヨーク ジョージタウン ベルリン
出力:
ベルリン ゲウィヨーク ベルジタウン
何故ですか?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;
}