C の文字配列に関して疑問があります。サイズ 1 の文字配列があります。論理的には、2 文字を超える文字を入力すると、セグメンテーション違反が発生するはずですがputs
、配列を適切にprintf
出力するのに対し、ガベージ値と一緒の配列、なぜこれが起こっているのですか
#include<stdio.h>
int main()
{
int i;
char A[1];
printf("%d\n",(int)sizeof(A));
gets(A);
puts(A);
for(i=0;i<8;i++)
{
printf("%c\n",A[i]);
}
}
O/P:
1
abcdefg
abcdefg
a
f
g
これに加えてarray size
、プログラムに の複数の文字を入力して、セグメンテーション フォールトをスローする必要があります。スタック内の SFP が原因ですか? SFP のサイズは 4 バイトです 間違っていたら訂正してください
1
abcdefghijklmnop
abcdefghijklmnop
a
f
g
h
Segmentation fault