この問題を解決しようとすると、最後の6時間はぶらぶらしています。最初は私はCプログラミングの初心者ですので、あまり期待しないでください。 struct内にInteger Arrayを作成するprogrammを書く必要があります。だから私はヘッダーを書き、main以外に "intarray.c"という名前の別のソースファイルを作成しました。私はすべてetcなどを含んでいましたが、構造体の内部にint配列a [n]を作成するために使用される引数 "int n"を取得する関数が必要です。しかし、私はこれを動作させることはできません..私の悪い説明に申し訳ありませんが、私はここで何をしているのか分かりません。私はまた、ポインタで作業を試みたが、それは私を混乱させ、彼らが必要かどうかわからない。C - ソースファイル内に構造体を作成する
私のヘッダは以下のようになります。
#ifndef INTARRAY_H_INCLUDED
#define INTARRAY_H_INCLUDED
struct IntArray
{
int length;
int numbers[];
};
void create(int);
void destruct();
void read(int);
void write(int, int);
#endif // INTARRAY_H_INCLUDED
と私の関数は以下のようになります。
create(int n)
{
struct IntArray arr;
arr.length = n;
arr.numbers[n];
}
しかし、今、私は、例えば、他の機能構造を使用することはできません私が特定の位置に配列を書きたい場合。これをどうすれば解決できますか? そして、愚かな質問のために叫んでください。あなたが動的に割り当てる必要が
このスニペットはコンパイルされません。柔軟な配列メンバーと動的メモリ割り当てについて読む。あなたの関数プロトタイプも間違っています。要するに、アロマストではあまりにも多くのエラーは表示されません。あなたのコース教材をまとめるか、良いCの本を手に入れ、チューターにアドバイスを依頼してください。 – Olaf
'struct IntArray * create(int n){struct IntArray * arr = calloc(1、sizeof(* arr)+ n * sizeof(int)); if(arr){arr.length = n; } return arr; } ' – BLUEPIXY
構造体にフレキシブルな配列メンバーがある場合は、配列のサイズを追加できるように' malloc() 'を使って配列を割り当てる必要があります。 – Barmar