2017-11-04 1 views
0

配列の要素を繰り返していますが、無限ループでスタックしようとしています 配列のサイズは現在2ですが、これらの要素を再度繰り返してサイズ5を作成しようとしています例えば サンプル出力用: char a[]="ED"; はそれを char a[]="EDEDE"; コードをしようとして固定長の配列を複製しようとしています

while(sizeof(a)<5) 
{ 
    for(i=0;i<2;i++){ 
     a[fk]=a[i]; 
     fk++;} 
} 

が無限ループに入り、次の通りである

+4

sizeof(a)は固定値です –

+2

配列の境界を超えた要素に書き込む操作は無効です(これは_undefined behavior_です)。配列の展開ではありません。 – BLUEPIXY

+1

最初に配列のサイズを変更し、内容を入力する必要があります。 [C言語による配列のサイズ変更](https://stackoverflow.com/questions/2937409/resizing-an-array-with-c)を参照してください。 – Serge

答えて

0

は、サイズ5、

この

T a[] = ... some initialiser ...; 

状または(c)において、サイズ変更することができないこの

T b[42]; 

ように定義された任意のタイプTの配列を作ります。

0

C11 6.4.5文字列リテラル(P7):

これらの配列は、それら 要素が適切な値を持って提供異なっているかどうかが指定されていません。プログラムが にそのような配列を変更しようとすると、動作は未定義です。

だから、何かに他のものを再割り当てすると、サイズ変更はありません。そうでなければ、未定義の動作です。

関連する問題