【发布时间】:2019-09-23 01:38:22
【问题描述】:
我是 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]声明后,编译器会为这个char数组分配6个字节,考虑最后一个'\0'字符,char数组中可以存储5个有效字符。
printf 显示我输入的所有字符,不管它有多长。但是当我使用索引来检查数组时,似乎我在数组中找不到多余的字符。
谁能帮忙解释一下发生了什么?
谢谢。
【问题讨论】:
标签: scanf