キーボードから文字列を読み取り、に格納したいbuf
。配列を設定しましたchar buf[6]
。この配列は最大で 5 文字と\0
.
次に123 456 789
、11 文字と を入力する\0
と、プログラムは実行できますが、より長い文字列を入力する123 456 789 123 456 789
と、実行時にクラッシュします。これら 2 つの入力も の範囲外ですがbuf
、一方は実行できますが、もう一方はクラッシュしますか?
これが私のコードです:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void read_str();
int main(){
read_str();
system("pause");
return 0;
}
void read_str(){
char buf[6] = {};
scanf("%[^\n]",buf);
printf("%d\n",strlen(buf));
printf("%s\n",buf);
}