C/C++の宿題を片付ケます 60代目

このエントリーをはてなブックマークに追加
754デフォルトの名無しさん
>>710? Nは固定でやっておいた。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 3
int main(void)
{
char* str[N], tmp[1024];
int i, j, length;
for( i = 0 ; i < N ; i++ ) {
printf("Word? "); /* まずは入力 */
fgets(tmp, 1023, stdin);
length = strlen(tmp);
if( tmp[length - 1] == '\n' ) tmp[--length] = '\0';
str[i] = (char*)malloc(length + 1);
strcpy(str[i], tmp);
/* 並べ替え。挿入ソート風バブルソート? */
for( j = i ; j > 0 && str[j][0] < str[j - 1][0] ; j-- ) {
char* t = str[j]; str[j] = str[j - 1]; str[j - 1] = t;
}
}
for( i = 0 ; i < N ; i++ ) { /* 出力 */
if( i ) printf(" %s", str[i]); /* 先頭以外は前にスペースを入れる */
else printf("%s", str[i]); /* 先頭の場合はスペースを入れない */
free(str[i]);
}
puts("");
return 0;
}