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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
akiks

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

#1

投稿記事 by akiks » 14年前

下記のような構造体を配列にコピーする方法がわかりません。

コード:

#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つで処理ができないとエラー表示されました。
このような場合どう処理をすればいいのか教えてください。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 14年前

やりたいことの概要を教えてもらって良いですか?
文字列用のstrcpyを数値に使うこと自体が大問題ですし、定義されている構造体自体が意味不明です。
C言語の文法としても出鱈目なとことが沢山あるので本来の意図をお聞きした方が良いとおもいました。

[追記]構造体にしている事自体が意味のない事なんですよね現状。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
bitter_fox
記事: 607
登録日時: 15年前
住所: 大阪府

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

#3

投稿記事 by bitter_fox » 14年前

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

構造体のメンバの値のリストアップでしたね、誤読してました修正します。
最後に編集したユーザー bitter_fox on 2011年9月05日(月) 15:23 [ 編集 1 回目 ]

non
記事: 1097
登録日時: 15年前

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

#4

投稿記事 by non » 14年前

同感です。やりたいことを明確に説明してください。
とりあえず、エラーをなくし、メンバーを配列に入れたいなら・・・

コード:

#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;
}
non

閉鎖

“C言語何でも質問掲示板” へ戻る