【问题标题】:why my program doesn't tell that the last charcter of the string array is a NULL? [duplicate]为什么我的程序没有告诉字符串数组的最后一个字符是 NULL? [复制]
【发布时间】:2020-10-17 23:39:23
【问题描述】:

我认为每个字符串数组都以 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 ?

【问题讨论】:

  • 此问题已因错误原因关闭!问题是hey 数组不够长(“hello”需要一个至少包含六个元素的数组)。
  • BTW NULL == '\0' 在大多数 C 实现中
  • @AdrianMole 它因正确原因而关闭,即它是重复的。
  • @AnttiHaapala 好的,现在我可以看到 all 重复项的列表,我同意。乍一看,它们并不都在那里。
  • @OussemaNehdi 请阅读this QA 我将此问题标记为重复。

标签: c arrays null


【解决方案1】:
  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 终止符。

【讨论】:

    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    相关资源
    最近更新 更多