#include <stdio.h>
#include <string.h>
int str_cmp(char *p, char *pp);
int main(void) {
int i, j, n = 0;
char str[30][20];
char tmp[20];
printf("***昇順に文字列をソートするプログラム***\n");
printf("30個以内で英単語を入力してください\n");
for (i = 0; i < 30; i++) {
if (scanf("%s", tmp) == EOF)
break;
if (strlen(tmp) > 20) {
printf("文字が長過ぎます\n");
i--;
} else {
strcpy(str[i], tmp);
}
n = i + 1;
}
printf("データ個数は%d\n", n);
printf("並び替え前\n");
for (i = 0; i < n; i++) {
printf("%s\n", str[i]);
}
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (str_cmp(str[i], str[j]) > 0) {
strcpy(tmp, str[i]);
strcpy(str[i], str[j]);
strcpy(str[j], tmp);
}
}
}
printf("並び替え後\n");
for (i = 0; i < n; i++) {
printf("%s\n", str[i]);
}
}
int str_cmp(char *p, char *pp) {
char s, ss;
for (;;) {
s = *p;
ss = *pp;
if (s == ss) {
p++;
pp++;
}
if (*p >= 0x41 && *p <= 0x5A) {
s += 32;
if (s == ss) {
p++;
pp++;
}
}
if (*pp >= 0x41 && *pp <= 0x5A) {
ss += 32;
if (s == ss) {
p++;
pp++;
}
}
if (*p == '\0')
return 0;
if (s != ss)
return s - ss;
}
}