C言語簡単にクラッシュしすぎワロタw
#include <stdio.h>
main()
{
char input[4];
gets(input);
printf("%s\n", input);
}
このようなコードを書いて、"01234567890123456789"
という文字列を入力するだけで、プロセスが簡単にクラッシュします。
C言語コワ~(((;゚Д゚)))ガクブル
なぜ5文字とか10文字ではクラッシュせず、20文字でクラッシュするのかは謎です。
(正確には、"012345678901234"だとOKで"0123456789012345"だとクラッシュしました)
どなたがご存知でしたら教えてください。
追記:Ubuntuでやってみたら・・・
dqneo:/home/dqneo/github/cwork% gcc ~/tmp/crush.c
/tmp/ccERj4xZ.o: In function `main':
crush.c:(.text+0x18): warning: the `gets' function is dangerous and should not be used.
dqneo:/home/dqneo/github/cwork% ./a.out
012
012
dqneo:/home/dqneo/github/cwork% ./a.out
0123
0123
zsh: segmentation fault ./a.out
"012"だとOKで、"0123"だとsegmentation faultでした。入力時の最後の改行コード1文字分があることを考えると、これは納得の行く結果ですね。
それ以前に、コンパイル時に"gets使うな"と警告が出ていました。
どうもありがとうございました。(誰に
カテゴリ:
C