という課題が出てプログラムをつくってみました。
しかし、コンパイルは通ったのですがセグメンテーション違反が出ます・・・
swap関数とwhile文の中にprintfを入れて確認したところ、どうやらswap関数の中がおかしいみたいです。
いろいろ調べてみたのですがわからないので、よろしければご教授ください!
もしそれ以外にもおかしいところがあれば教えていただけると助かります。
#include <stdio.h>
#include <string.h>
void swap(char *name[], int i, int j){
char temp[10];
strcpy(temp, name[i]);
strcpy(name[i], name[j]);
strcpy(name[j], temp);
}
int main(void){
char *name[] = {"Tokyo", "Yokohama", "Osaka", "Nagoya", "Sapporo", "Toyonaka", "Kobe", NULL};
int i = 1;
int j = 1;
int k = 0;
while(name[i] != NULL){
while(name[j] != NULL){
if(strcmp(name[j-1], name[j]) > 0){
swap(name, j-1, j);
}
j++;
}
i++;
}
while(name[k] != NULL){
printf("%s\n", name[j]);
k++;
}
return 0;
}