繁体   English   中英

null 字符在 C 的 char 数组中的行为如何?

[英]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 字节来指定字符串的结尾。 对字符串(例如strcpystrcmpprintf%s格式说明符)进行操作的函数将查找 null 字节以查找字符串的结尾。

您没有将string视为字符串,而只是将其视为char数组。 因此,数组的特定元素是否具有值 0 并不重要,因为您不会以任何方式将该值视为特殊值。 您只是打印数组中每个元素的十进制值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM