関数を使用して構造体内に配列を構築し、それを出力する必要がある演習で、私は数時間困惑しました。私の現在のプログラムでは、コンパイルはできますが、実行時にクラッシュします。
#define LIM 10
typedef char letters[LIM];
typedef struct {
int counter;
letters words[LIM];
} foo;
int main(int argc, char **argv){
foo apara;
structtest(apara, LIM);
print_struct(apara);
}
int structtest(foo *p, int limit){
p->counter = 0;
int i =0;
for(i; i< limit ;i++){
strcpy(p->words[p->counter], "x");
//only filling arrays with 'x' as an example
p->counter ++;
}
return;
ポインターの間違った使用法/組み合わせが原因だと思います。それらを調整しようとしましたが、「互換性のない型」エラーが発生するか、配列が空白のように見えます
}
void print_struct(foo p){
printf(p.words);
}
print_struct の段階まではうまくいきませんでしたが、 p.words が呼び出すのに適切な項目かどうかはわかりません。出力では、関数が x の配列を返すことが期待されます。「これはもう知っているはずだ」という重大な間違いを犯してしまった場合は、あらかじめお詫び申し上げます。ご協力いただきありがとうございます。