回答編集履歴

1

コード追加

2024/01/03 13:00

投稿

jimbe
jimbe

スコア13329

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
+ ```