首页 > 解决方案 > 为什么我的程序没有告诉字符串数组的最后一个字符是 NULL?

问题描述

我认为每个字符串数组都以 NULL 字符结尾,但是在这个程序中,检查字符串数组的最后一个字符是否不正确的语句

#include <stdlib.h>
#include <stdio.h>


int main() {

char hey[5]="hello";


if(hey[5] == NULL){
    puts("Yes the last charcter is a NULL ");
}

return 0;

}

并且如果 NULL 是 \0 为什么当我尝试 if (NULL == "\0") 语句总是 False ?

标签: carraysnull

解决方案


  1. 您的字符串太短,初始化只复制 5 个字符。(数组的hey[5]第 6 个元素)超出了数组边界并且未确定
char hey[]="hello";

if(hey[5] == '\0'  /* or simply 0 */){
    puts("Yes the last character is a nul terminator");
}
  1. NULL 不是 nul 终止符。

推荐阅读