15文字以内で構成される複数のアルファベットの文字列のソート(辞書順)を行いたいのですが、以下のようにエラーが出てしまい、解決ができません。自分のプログラムだとメモリが確保できていないということでしょうか?
条件として、0が入力されるまで単語の入力は続き、行数の指定はできません。
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { int i, j; char **words, *cp; int n = -1; printf("Input words\n"); words = (char **)malloc(16*sizeof(char *) ); while ( ( words[n][0]=getchar() ) != '0' ) { n++; words[n] = (char *)malloc(words, 16*sizeof(char) ); } for(i=1;i<n;i++) { for(j=1;j<n;j++) { if(strcmp(words[j-1], words[j])>0) { strcpy(cp, words[j-1]); strcpy(words[j-1], words[j]); strcpy(words[j], cp); } } } for(i=0; i<n; i++) { printf("&s\n", words[i]); } return 0; }
---実行例---
$ ./test
Input words
emacs
Segmentation fault (core dumped)