teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

話が2転3転して申し訳ないです、一度話を整理しました

2016/12/17 02:48

投稿

sakakendo0321
sakakendo0321

スコア45

title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,10 @@
2
2
  cで構造体の配列の特定のメンバだけの配列を出力する
3
3
 
4
4
  ###該当のソースコード
5
+ 話が2転3転して申し訳ないです下の
6
+ > 「簡単に」を明確にしてくださいについて
7
+
8
+ で話を整理しました
5
9
  ```c
6
10
  #include <stdio.h>
7
11
 
@@ -37,4 +41,33 @@
37
41
  sprintf(n[i],"%d",a[i].val);
38
42
  }
39
43
  ```
40
- だとメンバが増えた時にそれだけsprintf()を呼ばなければならないのでもっと簡単にする方法が知りたいです
44
+ だとメンバが増えた時にそれだけsprintf()を呼ばなければならないのでもっと簡単にする方法が知りたいです
45
+
46
+ #「簡単に」を明確にしてくださいについて
47
+ ```c
48
+ typedef struct{
49
+ char c1[128];
50
+ char c2[128];
51
+ char c3[128];
52
+ char c4[128];
53
+ char c5[128];
54
+
55
+ }str;
56
+ str a[3]={
57
+ {"H","e","l","l","o"},
58
+ {"W","o","r","l","d"},
59
+ {"A","I","U","E","O"},
60
+ };
61
+ for(int i=0;i<4;i++){
62
+ sprintf(string1[i],"%s",a[i].c1);
63
+ sprintf(string2[i],"%s",a[i].c2);
64
+ sprintf(string3[i],"%s",a[i].c3);
65
+ sprintf(string4[i],"%s",a[i].c4);
66
+ sprintf(string5[i],"%s",a[i].c5);
67
+ }
68
+ ```
69
+ のようにそれぞれのメンバをそれぞれの用意した配列に入れたいのですがこれだと
70
+ ```c1,c2,c3,c4,c5```それぞれのためにsprintfを呼びださなければいけなく、またメンバに```c6 ,c7,...```と増えた時にそれだけ呼び出すのが煩わしいのでそれをまとめて短く記述したいということです。
71
+ メンバに```int,double```等他の型が追加された時にもまとめる方法が知りたいです.
72
+ 構造体のポインタを用いて記述できるような気がしたのですが、自分では検討もつかず、調べても出てこなかったので
73
+ よろしくお願いします

2

また実行結果変更しました、すいません

2016/12/17 02:48

投稿

sakakendo0321
sakakendo0321

スコア45

title CHANGED
File without changes
body CHANGED
@@ -24,11 +24,12 @@
24
24
  ```
25
25
  例えば上のコードで言うと
26
26
  ```c
27
+ printf("%s",string);
27
28
  for(int i=0;i<5;i++){
28
- printf("%s%d",string,n[i]);
29
+ printf("%d",n[i]);
29
30
  }
30
31
  ```
31
- すれば```a0b1c2d3e4```が出力されるようにしたいです
32
+ すれば```abcde01234```が出力されるようにしたいです
32
33
 
33
34
  ```c
34
35
  for (int i=0;i<5;i++){

1

実行結果と動作例を変更しました。

2016/12/16 13:26

投稿

sakakendo0321
sakakendo0321

スコア45

title CHANGED
File without changes
body CHANGED
@@ -25,7 +25,15 @@
25
25
  例えば上のコードで言うと
26
26
  ```c
27
27
  for(int i=0;i<5;i++){
28
- printf("%s",string);
28
+ printf("%s%d",string,n[i]);
29
29
  }
30
30
  ```
31
- すれば```abcde```が出力されるようにしたいです
31
+ すれば```a0b1c2d3e4```が出力されるようにしたいです
32
+
33
+ ```c
34
+ for (int i=0;i<5;i++){
35
+ sprintf(string,"%s",a[i].c);
36
+ sprintf(n[i],"%d",a[i].val);
37
+ }
38
+ ```
39
+ だとメンバが増えた時にそれだけsprintf()を呼ばなければならないのでもっと簡単にする方法が知りたいです