char *pos = strchr(buf + 2, '\0');检测NULL,不是返回空吗
1条回答 默认 最新
- 战在春秋 2017-08-10 21:13关注
strchr函数当查找失败时,返回NULL。
当查找成功时,返回一个指针,该指针指向找到的字符。题目中的代码,查找字符串结束字符'\0',是能够成功的,所以并不返回NULL,
而是返回指向'\0'字符的指针。看一下例子:
#include <stdio.h> #include <string.h> int main() { char buf[] = "hello"; //字符串末尾隐含'\0' char *pos = strchr(buf + 2, '\0'); printf("%p\n",pos); //打印该指针值 printf("%d\n",*pos); //注意和上一行的区别 return 0; }
可以运行此程序,观察输出。
如果对您有帮助,请采纳答案好吗,谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 matlab有关常微分方程的问题求解决
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?
- ¥100 求三轴之间相互配合画圆以及直线的算法