私は最近Cを学び始めたので、私の質問が非常に基本的または不明確な場合はお詫びします。
プログラムに3つのコマンドライン値を渡します。(TYPE、LENGTH、VAL)。これらの値を使用して、タイプTYPEおよび長さLENGTHのヒープ上に配列を作成し、すべての要素をVALに初期化します。だから例えば
float 8 4:それぞれの値が4になる8つの要素を持つfloat配列を作成します。
char 4 65:それぞれが「A」の値を持つ4つの要素を持つchar配列を作成します。
長さの決定は簡単です。しかし、配列とVALへのポインタを初期化する方法を決定するのに苦労しています。
以下は私がこれまでに試みたものです(失敗しました)。charポインターを初期化していますが、代わりにfloatまたはintポインターが必要になる可能性があるため、これが正しくないことがわかります。TYPEの最初の文字に基づくswitchステートメントも使用していますが、これは非常にハッキーなようです。
int main (int argc, char *argv[]){
int LENGTH;
char *ptr;
LENGTH = atoi ( argv[2] );
switch( *argv[1] ){
case 'f':
printf("Type is float\n");
ptr = (float *)malloc(LENGTH * sizeof(float));
break;
case 'c':
printf("Type is char\n");
ptr = (char *)malloc(LENGTH * sizeof(char));
break;
case 'i':
printf("Type is int\n");
ptr = (int *)malloc(LENGTH * sizeof(int));
break;
default:
printf("Unrecognized type");
break;
}
while( i < arrayLength ){
*ptr[i] = *argv[3];
i++;
}
free ( ptr );
return 0;
}
問題の初期化要素に関する問題も確認できます。初期値はTYPEに依存するため、変換する必要があります。
私が疑問に思っているのは、事前にTYPEを知らなくても、ポインタを作成したり、値を初期化したりするにはどうすればよいですか?私はおそらくこの問題を完全に間違った方向から見ているので、アドバイスをいただければ幸いです。
ありがとう