現在C言語で簡単なプログラミングを書いているのですが、
構造体(1)(下記参照)から、構造体(2)(下記参照)への代入の方法がわからず悩んでいます。もしよければ手を貸してください!!
標準関数などがないということはわかったので、
地道に代入を行いたいです。
イメージ・・・(data[n].b = moji[n].d;)
(1)struct list_kouzou{
int a;
char b[30];
char c[8];
}data[100];
(2)struct list_tai{
char d[30];
}moji[15];
No.4ベストアンサー
- 回答日時:
★アドバイス
>標準関数などがないということはわかったので、
↑
memcpy() 関数が利用できます。→回答者 No.2 さんを参考に。
strcpy() 関数も利用できるかも。→回答者 No.1 さんを参考に。
※char b[]、char d[] が文字列ならば strcpy() 関数が利用できますが、何かのデータ
ならば安全のために memcpy() で配列全体をコピーします。データ内容によって決める。
>地道に代入を行いたいです。
↑
ループを組んで代入したいのですか。
それなら下のサンプル関数などを作ってコピーしてみる。
サンプル関数:
void listcopy( struct list_kouzou *data, struct list_tai *moji )
{
char *pdata = data->b; ←list_kouzou 構造体の char b[30] へのポインタ
char *pmoji = moji->d; ←list_tai 構造体の char d[30] へのポインタ
int i;
for ( i = 0 ; i < sizeof(data->b) ; i++ ){
*pdata++ = *pmoji++; ←地道にコピー
}
}
// 使い方
int main( void )
{
struct list_kouzou data[ 100 ];
struct list_tai moji[ 15 ];
int n;
/*
構造体 data、moji への代入処理
*/
for ( n = 0 ; n < 15 ; n++ ){
listcopy( data[n], moji[n] ); ←イメージに近い処理(data[n].b = moji[n].d)
}
/*
その他の処理
*/
return 0;
}
No.3
- 回答日時:
代入に関数を使わない場合は、
#include <stdio.h>
typedef struct list_kouzou{
int a;
char b[30];
char c[8];
}data[100];
typedef struct list_tai{
char d[30];
}moji[15];
void main (void)
{
data a;
moji b;
unsigned int i,maxA,maxB,indexA=0,indexB=0;
for (i=0,maxA=(maxA=sizeof(a[indexA].b)/sizeof(a[indexA].b[0]))<(maxB=sizeof(b[indexB].d)/sizeof(b[indexB].d[0]))?maxA:maxB;i-maxA;i++) a[indexA].b[i]=i+1;
i^=i;while (i-maxA) b[indexB].d[i++]=a[indexA].b[i];
for (i=0;i<maxA;i++) printf("%d ",b[indexB].d[i]);
printf("\r\n");
return;
}
のようにします。
回答ありがとうございます。大変に参考になりました。
少々難易度が高く感じられた(簡単であればすみません)ので、今後の参考にさせていただきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラムが書けません。 4 2023/01/22 22:57
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# C言語について コマンドラインで >変数 12.00 (char型) と、小数点付きの値を共用体に渡 1 2022/04/22 16:56
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Integer変数をカラにしたいので...
-
C言語 構造体の中に共用体を定...
-
VBAのプログラムで、DIAG = 1# ...
-
C++ 構造体の一括初期化 {0}
-
VBAの変数のデータ型を変更する...
-
変数の初期化について
-
VBAにてcolorindexを変数に格納...
-
HP-UXへの移植でセグメンテーシ...
-
命名規則 VB 構造体
-
8個のビットを1バイトとして...
-
構造体のデータを丸ごとコピー...
-
値が代入されてない時
-
10進数の変換方法
-
構造体の継承?再定義?
-
long型のデータをバイト型の配...
-
aspでユーザー定義の構造体を作...
-
構造体のポインタにNULLが入らない
-
「#undef」と「#define」の使い...
-
VBAで符号無し整数
-
charとucharの違い
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
C++ 構造体の一括初期化 {0}
-
long型のデータをバイト型の配...
-
「#undef」と「#define」の使い...
-
構造体のデータを丸ごとコピー...
-
VBAにてcolorindexを変数に格納...
-
C言語 構造体の中に共用体を定...
-
値が代入されてない時
-
異なる構造体のデータのコピー
-
typedefをプログラム中で解除す...
-
構造体のポインタにNULLが入らない
-
charとucharの違い
-
整数から16進数への変換 現在c...
-
VBAの変数のデータ型を変更する...
-
VB.NETのStructureというのはど...
-
構造体を型の異なる構造体に代入
-
日付チェック関数について
-
ユーザー定義型変数の一括初期化
-
構造体の初期化方法について
おすすめ情報