c - 为什么我的程序没有告诉字符串数组的最后一个字符是 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 ?
解决方案
- 您的字符串太短,初始化只复制 5 个字符。(数组的
hey[5]
第 6 个元素)超出了数组边界并且未确定
char hey[]="hello";
if(hey[5] == '\0' /* or simply 0 */){
puts("Yes the last character is a nul terminator");
}
- NULL 不是 nul 终止符。
推荐阅读
- javascript - 如何将道具插入字符串以用作 iframe 调用
- android - Desugaring - Java 8 Stream API 与 Proguard 在发布版本中崩溃
- ruby-on-rails - NoMethodError - 未定义的方法“存在?” 对于零:NilClass:
- javascript - 通过 JS 函数更改 CSS 伪类状态
- javascript - 纯javascript,静态数组的延迟加载
- docker - Docker 服务依赖,重启 docker 服务后不起作用
- axios - Axios 出乎意料的慢
- java - 在 androidx 搜索视图中未调用关闭侦听器
- python - DataFrame.loc 不会遍历每一行吗?
- c - 试图编写一个 C 函数以在标准输入中读取结构的元素