Я новичок в программировании на C и действительно запутался в приведенном ниже коде:
#include <stdio.h>
#include <string.h>
int main(void)
{
char arrstr[6];
int i;
printf("Enter: ");
scanf("%s",arrstr);
printf("arrstr is %s\n",arrstr);
printf("length os arrstr is %d\n",strlen(arrstr));
for(i=0;i<20;i++)
{
printf("arrstr[%d] is %c, dec value is %d\n",i,arrstr[i],arrstr[i]);
}
return 0;
}
Насколько я понимаю, после объявления arrstr [6] компилятор выделит 6 байтов для этого символаВ массиве и с учетом последнего символа '\ 0' в массиве char можно сохранить 5 действительных символов.
Но после запуска этого короткого кода я получаю следующий результат: ![enter image description here](https://i.stack.imgur.com/d2TBJ.png)
printf показывает все введенные символы, независимо от того, как долго это будет.Но когда я использую индекс для проверки массива, кажется, я не могу найти дополнительные символы в массиве.
Может кто-нибудь помочь объяснить, что произошло?
Спасибо.