###前提・実現したいこと
cで構造体の配列の特定のメンバだけの配列を出力する
###該当のソースコード
話が2転3転して申し訳ないです下の
「簡単に」を明確にしてくださいについて
で話を整理しました
c
1#include <stdio.h> 2 3typedef struct { 4 char c[128]; 5 int val; 6}str; 7 8int main(void){ 9 // Here your code ! 10 str a[10]={ 11 {"a",0}, 12 {"b",1}, 13 {"c",2}, 14 {"d",3}, 15 {"e",4} 16 }; 17} 18
例えば上のコードで言うと
c
1printf("%s",string); 2for(int i=0;i<5;i++){ 3 printf("%d",n[i]); 4}
すればabcde01234
が出力されるようにしたいです
c
1for (int i=0;i<5;i++){ 2 sprintf(string,"%s",a[i].c); 3 sprintf(n[i],"%d",a[i].val); 4}
だとメンバが増えた時にそれだけsprintf()を呼ばなければならないのでもっと簡単にする方法が知りたいです
#「簡単に」を明確にしてくださいについて
c
1typedef struct{ 2 char c1[128]; 3 char c2[128]; 4 char c3[128]; 5 char c4[128]; 6 char c5[128]; 7 8}str; 9str a[3]={ 10 {"H","e","l","l","o"}, 11 {"W","o","r","l","d"}, 12 {"A","I","U","E","O"}, 13}; 14for(int i=0;i<4;i++){ 15 sprintf(string1[i],"%s",a[i].c1); 16 sprintf(string2[i],"%s",a[i].c2); 17 sprintf(string3[i],"%s",a[i].c3); 18 sprintf(string4[i],"%s",a[i].c4); 19 sprintf(string5[i],"%s",a[i].c5); 20}
のようにそれぞれのメンバをそれぞれの用意した配列に入れたいのですがこれだと
c1,c2,c3,c4,c5
それぞれのためにsprintfを呼びださなければいけなく、またメンバにc6 ,c7,...
と増えた時にそれだけ呼び出すのが煩わしいのでそれをまとめて短く記述したいということです。
メンバにint,double
等他の型が追加された時にもまとめる方法が知りたいです.
構造体のポインタを用いて記述できるような気がしたのですが、自分では検討もつかず、調べても出てこなかったので
よろしくお願いします
回答3件
あなたの回答
tips
プレビュー