你不能录入一个整数,然后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;
}