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个字母才报错这是为什么啊?
高手帮帮忙 谢谢啦
最新回答
猫小柒

2024-11-06 11:08:26

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

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

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

扩展资料:

char用法实例:

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

char a='1';

char b='$';

char c='X';

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

char e='\63'; //也可以使用

转义字符
的形式

char 称为字符类型,只能用

单引号
' '来包围,不能用双引号" "包围。而
字符串
只能用双引号" "包围,不能用单引号' '包围。

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

参考资料来源:

百度百科-char (计算机语言关键字)

世俗如浮云

2024-11-06 02:52:40

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个字符
幽萌之羽

2024-11-06 01:50:10

内存溢出了。 容纳不了那么多,
char st[5];

说明st-》5个字节的空间合法。 之后的空间是不合法的。往里面强行写 那就出问题了。
追问
可我写小于13个字母就不报错
追答
不报错 也不说明 无问题。 注意思维方式。
追问
我知道这也超出写是错的。可他为什么不报错
追答
这个原因很复杂。我建议你学完c语言再学汇编语言。这个问题就解决了
一个蛋上三朵花

2024-11-06 04:59:30

访问了 禁止访问的地址
折磨已成瘾゛

2024-11-06 09:51:21

超出数组范围即越界了,结果是无法预料的。就好像放任一辆汽车开,他会开出马路,但结果是立马翻车还是撞死人还是撞树上或者开河里,就不知道了。