2017-02-05 5 views
0

私は配列を塗りつぶしたので、それぞれの構造体フィールドに割り当てる必要があります。char配列の構造体値を埋めてください

char array1[MaxLine] = "bob"; 
char array2[MaxLine] = "rick"; 
char array3[MaxLine] = "dan"; 

だから、彼らの言うことをふりまとめることができます。ヘッダーファイルで宣言された構造体があり、この関数はメインから別の2番目のソースにあります。これらの配列の値を埋めるために、この独立した関数から構造体にアクセスするにはどうすればよいでしょうか。私は..フィラーと呼ばれる変数を宣言

struct structname filler; 

を試してみましたが、その後、構造体にアクセスし、この方法でそれを埋めるためにそれを使用している

..

strcpy(filler->firstfield, input); 
strcpy(filler->secondfield, input); 
:でこれを追加する

ただし、アクセス違反をスローし続けます。

+0

@chrk編集中です、申し訳ありません。 – AerisNeo

+0

structに ' - >'を使用することはできません。コンパイラのメッセージを確認してください。 –

+0

ようこそスタックオーバーフローへ。すぐに[About]と[Ask]のページをお読みください。しかし、もっと緊急にMCVE([MCVE])の作成方法をお読みください。これまでのところ質問に含まれているのは、MCVEだけです。非常に多くの重要な情報が欠落しており、欠落している部分のいずれかにあなたの問題の原因が含まれる可能性があります。一般的に言えば、 'strcpy()'を使って構造体内の適切なサイズの配列に固定データをコピーしても問題ありません。それらが配列ではなくポインタであれば、構造体にコピーする前にメモリを割り当てる必要があります。 –

答えて

0

引数として渡す必要があります。たとえば:

#include "MyStruct.h" //declares the struct 
#include "MyFunctions.h" // where the function is 

int main() 
{ 
    struct MyStruct instance; 

    assignFields(&instance); 

    //instance is now assigned 
} 

//In MyFunctions.h you declare your function 
#include "MyStruct.h" //Needs to know about the struct 
void assignField(MyStruct*); 


//Then you implement it in the .c file 
void assignFields(MyStruct* localInstance) 
{ 
    //call strcpy here 
    //assuming the input strings are available her 
    //otherwise you have to pass them in as well 

} 

あなたは、コンパイラを実行すると、それが署名を把握し、個別に各ファイルをコンパイルする.hファイルを使用しますが、その後、リンカは1つの実行可能プログラムで2つの.cファイルをまとめます。

関連する問題