私は配列を含む構造体を返すプログラムを作っていますが、配列の要素は完全に間違っています。私はこのサイト、Google、さらにはBingで答えを探し続けています。私は見つけることができる最高は次のように答えている:配列内の正しい要素を持つ配列を含む構造体(関数から)を返すにはどうすればよいですか?
機能は、彼らは、構造体を返すことができ、
しかしC.で配列を返すことはできません。そして、構造体は、配列を含むことができます...今How to make an array return type from C function?から
は、どのように私は、ポインタを使用せずにこの問題を解決するのですか?
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
struct Codes{
int as;
int a[];
};
struct Codes create(int as){
int a[as];
for(int j = 0;j<as;j++)
a[j]=j+1;
struct Codes c;
c.as = as;
c.a[c.as];
for(int i=0; i<as; i++)
c.a[i] = a[i];
for(int i=0; i<as; i+=1)
printf("%d \n", c.a[i]);
return c;
}
int main(int argc, char **argv) {
struct Codes cd;
int as = 4;
cd = create(as);
for(int i=0; i<4; i+=1)
printf("%d \n", cd.a[i]);
}
実際の出力:
1
2
3
4
0
0
2
-13120
予想される出力:あなたの関数で
1
2
3
4
1
2
3
4
説明してください。 –
構造体の宣言で配列のサイズを指定する必要があります。ランタイムパラメータに基づいて可変ではありません –
@MM助けてくれてありがとうございます –