7

Cでchar配列を作成してintの数字で埋めようとしていますが、intは任意の数字にすることができます。

getDigits(int num)int の桁数を返す という作成された関数を使用しています。

char buffer[getDigits(number)] = "";
snprintf(buffer, sizeof(buffer),"%d",number);

しかし、gcc を使用してコンパイルすると、次のように返されます。

error: variable-sized object may not be initialized

私はすべてを試しました。として宣言するとchar fileSizeStr[5] = "";、機能します。バッファサイズを動的に宣言しようとすると問題が発生していることがわかりますが、これを達成する方法があるかどうかを知りたいです。

4

5 に答える 5

5

次のようなものを試してください:

 char* buffer =(char *)malloc(getDigits(number)*sizeof(char));

malloc と calloc は動的割り当てに使用されます。

于 2013-06-07T00:32:46.387 に答える
3

以下が役立つかもしれません

char* buffer;
buffer = (char*)malloc(number * sizeof(char));
于 2013-06-07T00:34:32.240 に答える
2

malloc動的な量のメモリを割り当てるために使用する必要があります。

あなたが行った方法での初期化は、コンパイル時にサイズがわかっている場合にのみ許可されます。

于 2013-06-07T00:29:29.710 に答える