ページ 11

構造体を配列に内容をコピーする方法

Posted: 2011年9月05日(月) 10:52
by akiks
下記のような構造体を配列にコピーする方法がわかりません。

コード:

#include <stdio.h>
#include <string.h>

struct z {
      double z;
};

struct get {
      struct z x;
};

double a[1000];
struct get  b[1000];

int main()
{
    double b[].x.z={200,300,400};
   /*構造体を配列a[]にコピーする処理*/   

  return 0;
}
このようなプログラムで構造体を配列にコピーしたいのですが、
strcpyを使用したときargumentが1つと2つで処理ができないとエラー表示されました。
このような場合どう処理をすればいいのか教えてください。

Re: 構造体を配列に内容をコピーする方法

Posted: 2011年9月05日(月) 11:06
by softya(ソフト屋)
やりたいことの概要を教えてもらって良いですか?
文字列用のstrcpyを数値に使うこと自体が大問題ですし、定義されている構造体自体が意味不明です。
C言語の文法としても出鱈目なとことが沢山あるので本来の意図をお聞きした方が良いとおもいました。

[追記]構造体にしている事自体が意味のない事なんですよね現状。

Re: 構造体を配列に内容をコピーする方法

Posted: 2011年9月05日(月) 11:13
by bitter_fox
akiks さんが書きました:

コード:

    double b[].x.z={200,300,400};
   /*構造体を配列a[]にコピーする処理*/   
このようなプログラムで構造体を配列にコピーしたいのですが、
strcpyを使用したときargumentが1つと2つで処理ができないとエラー表示されました。
double b[].x.z={200,300,400};は文法的に問題があります。

また、strcpyをstruct copyとして解釈したのだと思いますがstrcpyはstring copy、文字列のコピーを行う関数です。
ですのでstrcpyの引数はchar*型です。
http://www9.plala.or.jp/sgwr-t/lib/strcpy.html

また、構造体のコピーは普通に代入演算子で代入すればよいかと思います。
http://www5c.biglobe.ne.jp/~ecb/c/10_03_02.html

構造体のメンバの値のリストアップでしたね、誤読してました修正します。

Re: 構造体を配列に内容をコピーする方法

Posted: 2011年9月05日(月) 11:14
by non
同感です。やりたいことを明確に説明してください。
とりあえず、エラーをなくし、メンバーを配列に入れたいなら・・・

コード:

#include <stdio.h>
#include <string.h>
 
struct z {
      double z;
};
 
struct get {
      struct z x;
};
 
double a[1000];
struct get  b[]={200,300,400};

 
int main()
{
	int i;
	for(i=0;i<3;i++){
 		a[i]=b[i].x.z;  
 		printf("%f ",a[i]);
 	}
	return 0;
}