#include <stdio.h>

int main(int argc, char *argv[]) {
   char s[]="help";
   printf("%d",strlen(s));  
}

为什么上面的输出是4,5不是正确答案吗?

内存中应为‘h’、‘e’、‘l’、‘p’、‘\0’.

谢谢

推荐答案

strlen:返回给定字节字符串的长度,不包括空终止符;

char s[]="help";
strlen(s) should return 4.

sizeof:返回给定字节字符串的长度,包括空终止符;

char s[]="help";
sizeof(s) should return 5.

C++相关问答推荐

如何启用ss(另一个调查套接字的实用程序)来查看Linux主机上加入的多播组IP地址?

__VA_OPT__(,)是否可以检测后面没有任何内容的尾随逗号?

如何在C宏中确定 struct 中元素的类型?

如何在C中引发/处理自定义信号?

在C++中访问双指针

为什么指针运算会产生错误的结果?

这个计算C中阶乘的函数正确吗?

C堆栈(使用动态数组)realloc内存泄漏问题

条件跳转或移动取决于未初始化值(S)/未初始化值由堆分配创建(Realloc)

从另一个宏函数调用C宏

为什么二进制文件的大小不会随着静态数据的大小而增加?

STM32 FATFS用户手册(Um1721)中的代码正确吗?

发送和接收的消息中的Unix域套接字不匹配

Makefile无法将代码刷新到ATmega328p

try 判断长整数是否为素数

哪些C++功能可以在外部C块中使用

C struct 中的冒泡排序

为什么写入关闭管道会返回成功

OpenGL 中的非渐变 colored颜色 变化

如何确定 C 程序中的可用堆内存