[英]How does a null character behave in a char array in C?
我试图用中间和结尾的 null 字符来反转这个 char 数组,而不使用字符串长度。 (原代码)
#include <stdio.h>
#include <stdlib.h>
int main()
{
char string[4] ={'c', '\0', 's', '\0'};
printf("What do we love?\n");
printf("Yes, we love:");
for(int i=3; i>=0; i--){
printf("%d", string[i]);
}
return 0;
}
我预计 output 什么都不会显示。 但是我在我猜是 null 字符的地方得到了带有空格的数组的反面? ( output )
Bcoz 我也尝试过使用 %d 而不是 %c ,发现这些空格显然确实具有 0 的 ascii 值。(代码略有变化 + output + ascii 表)
那么,这是否意味着循环不会总是将 char 数组中的 null 字符视为终止指示符? 这是否也意味着 null 字符,实际上自动附加到 char 数组的空白处,在显示中打印为空格,但我们只是说它在遇到 Z37A6259CC0C1DAE299A76 ' 与大多数代码一起显示?
在char
数组中使用 null 字节来指定字符串的结尾。 对字符串(例如strcpy
、 strcmp
和printf
的%s
格式说明符)进行操作的函数将查找 null 字节以查找字符串的结尾。
您没有将string
视为字符串,而只是将其视为char
数组。 因此,数组的特定元素是否具有值 0 并不重要,因为您不会以任何方式将该值视为特殊值。 您只是打印数组中每个元素的十进制值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.