关于C语言字符数组的问题
发表于 : 2012-10-05 13:50
#include <stdio.h>
int main ()
{
char str[]="";
printf ("please input : ");
scanf ("%s",str);
printf ("%s\n",str);
return 0;
}
用上面这样的写法,最多只能从键盘读取4个字符,如果输入5个,还能正常输出,但会弹出错误警告(XX内存不能为“written”)。这是怎么回事啊?编译器是vc++6.0,系统是xp(应该是32位,学校的机子)。
#include <stdio.h>
int main ()
{
char str[2];
printf ("please input : ");
scanf ("%c",&str[0]);
printf ("%c\n",str[0]);
scanf ("%c",&str[1]);
printf ("%c\n",str[1]);
scanf ("%c",&str[2]);
printf ("%c\n",str[2]);
scanf ("%c",&str[3]);
printf ("%c\n",str[3]);
return 0;
}
还有上面的写法居然没报错,可以读取并输出4个字符,char str[2];不是应该是只有str[0],str[1]两个元素吗?为什么可以有str[2],str[3]?
int main ()
{
char str[]="";
printf ("please input : ");
scanf ("%s",str);
printf ("%s\n",str);
return 0;
}
用上面这样的写法,最多只能从键盘读取4个字符,如果输入5个,还能正常输出,但会弹出错误警告(XX内存不能为“written”)。这是怎么回事啊?编译器是vc++6.0,系统是xp(应该是32位,学校的机子)。
#include <stdio.h>
int main ()
{
char str[2];
printf ("please input : ");
scanf ("%c",&str[0]);
printf ("%c\n",str[0]);
scanf ("%c",&str[1]);
printf ("%c\n",str[1]);
scanf ("%c",&str[2]);
printf ("%c\n",str[2]);
scanf ("%c",&str[3]);
printf ("%c\n",str[3]);
return 0;
}
还有上面的写法居然没报错,可以读取并输出4个字符,char str[2];不是应该是只有str[0],str[1]两个元素吗?为什么可以有str[2],str[3]?