回答編集履歴
1
コード追加
test
CHANGED
@@ -1,2 +1,40 @@
|
|
1
1
|
swap 関数の引数・仮引数がそれで良いのか確認してください。
|
2
2
|
a+i(a[i]も同じ) や a+j(a[j]も同じ) は考えているようなデータを指しているでしょうか。
|
3
|
+
|
4
|
+
---
|
5
|
+
文字列領域に文字列を展開して書き換えるタイプです。
|
6
|
+
moji 関数は [strcmp](https://bituse.info/c_func/9) と同じですので変更しています。
|
7
|
+
```c
|
8
|
+
#include <stdio.h>
|
9
|
+
#include <string.h>
|
10
|
+
|
11
|
+
#define STRMAX (9+1) //+1 は '\0' 分
|
12
|
+
|
13
|
+
void sort(char a[][STRMAX], int n) { //文字列領域配列と, 配列の件数
|
14
|
+
for(int i=0; i<n; i++) {
|
15
|
+
for(int j=i+1; j<n; j++) {
|
16
|
+
if(strcmp(a[i], a[j]) > 0) {
|
17
|
+
char x[STRMAX];
|
18
|
+
strcpy(x, a[i]);
|
19
|
+
strcpy(a[i], a[j]);
|
20
|
+
strcpy(a[j], x);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
int main(void) {
|
27
|
+
char a[][STRMAX]={"one","two","three","four","five","six","seven","eight","nine","ten"};
|
28
|
+
|
29
|
+
int n = sizeof(a) / sizeof(a[0]); //a の件数
|
30
|
+
|
31
|
+
sort(a, n);
|
32
|
+
|
33
|
+
for(int i=0; i<n; ) {
|
34
|
+
printf("%s", a[i++]);
|
35
|
+
printf("%s%s", i<n?",":"", i%3&&i<n?"":"\n");
|
36
|
+
}
|
37
|
+
|
38
|
+
return 0;
|
39
|
+
}
|
40
|
+
```
|