c语言char可以存多少个字符

char st[5];

printf("input string:\n");
scanf("%s",st);
printf("%s\n",st);
st为15的时候可以输入14个字母因为左后有个\0
可是当把st[15]改为st[5]的时候输入13个字母才报错这是为什么啊?
高手帮帮忙 谢谢啦

C语言中,char是一个字符类型的关键字。

如果利用char定义一个变量,那么只能存放一个字符;

如果利用char定义一个数组或字符指针,那么存放的字符个数根据用户分配的内存空间来定。

扩展资料:

char用法实例:

用 char 类型来专门表示一个字符,例如:

char a='1';

char b='$';

char c='X';

char d=' '; // 空格也是一个字符

char e='\63'; //也可以使用转义字符的形式

char 称为字符类型,只能用单引号' '来包围,不能用双引号" "包围。而字符串只能用双引号" "包围,不能用单引号' '包围。

输出字符使用 %c,输出字符串使用 %s。

参考资料来源:百度百科-char (计算机语言关键字)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-06

C语言中,char是一个字符类型的关键字。

如果利用char定义一个变量,那么只能存放一个字符;

如果利用char定义一个数组或字符指针,那么存放的字符个数根据用户分配的内存空间来定。


举例说明如下:

char ch='a';   // 存放一个字符
char ch="ab";  // 只接收第一个字符,字符'b'被舍去
char a[] = "adfsdf";  // 存放7个字符(包含一个结束字符'\0')
char *p = "adfsdf";   // 存放7个字符(包含一个结束字符'\0')
char b[20];  // 最多可以存放20个字符
char *p = (char *)malloc(20); // 最多可以存放20个字符

第2个回答  2012-08-24
内存溢出了。 容纳不了那么多,
char st[5];

说明st-》5个字节的空间合法。 之后的空间是不合法的。往里面强行写 那就出问题了。追问

可我写小于13个字母就不报错

追答

不报错 也不说明 无问题。 注意思维方式。

追问

我知道这也超出写是错的。可他为什么不报错

追答

这个原因很复杂。我建议你学完c语言再学汇编语言。这个问题就解决了

本回答被提问者和网友采纳
第3个回答  2012-08-24
访问了 禁止访问的地址
第4个回答  2012-08-24
超出数组范围即越界了,结果是无法预料的。就好像放任一辆汽车开,他会开出马路,但结果是立马翻车还是撞死人还是撞树上或者开河里,就不知道了。
相似回答