C语言 char数组的边界以及getchar()

2020-06-30 科技 57阅读
你这个涉及到动态分配内存,动态分配内存不是这样用的。
你不能录入一个整数,然后char a[n];
char a[6],这样叫静态分配内存,要在一开始就写好需要的内存大小。
首先写给你正确的分配内存处理。其次你问的为什么0是空格或者换行原因是第一个输入长度,输入的格式是6 (空格)或者是6\n(换行) ,scanf("%d",&n);录入了6一个数字。
然后空格或者换行则留到了下一次录入。
所以a[0]是空格或者换行。
代码如下,6超过了范围所以是读不了,或者是乱码。
#include
#include
int main()
{
int n;
int i,x,y,z;
char tem;

char* a;

printf("请输入将要输入的字符串的长度\n");
scanf("%d",&n);
a= (char*)malloc (n*sizeof(char));
printf("请输入内容");
getchar();
for (y=0;y<=n;y++)
a[y]=getchar();
printf("%c",a[0]);
printf("%c",a[1]);
printf("%c6超出范围",a[6]);
return 0;
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com