IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C字符串库 函数详解 -> 正文阅读

[C++知识库]C字符串库 函数详解

strlen, strnlen_s

在标头?<string.h>?定义

size_t?strlen(?const?char?*str?);

(1)

size_t?strnlen_s(?const?char?*str,?size_t?strsz?);

(2)(C11 起)

1)?返回给定空终止字符串的长度,即首元素为?str?所指,且不包含首个空字符的字符数组中的字符数。

?若?str?不是指向空终止字节字符串的指针则行为未定义。

2)?同?(1)?,除了若?str?为空指针则返回零,而若在?str?的首?strsz?个字节找不到空字符则返回?strsz?。

?若?str?指向缺少空字符的字符数组且该字符数组的大小 <?strsz?则行为未定义;换言之,?strsz?的错误值不会暴露行将来临的缓冲区溢出。

同所有边界检查函数,?strnlen_s?仅若实现定义了?__STDC_LIB_EXT1__?,且用户在包含?<string.h>?前定义?__STDC_WANT_LIB_EXT1__?为整数常量?1?才保证可用。。

参数

str-指向要检测的空终止字符串的指针
strsz-要检测的最大字符数量

返回值

1)?空终止字节字符串?str?的长度

2)?成功时为空终止字节字符串?str?的长度,若?str?是空指针则为零,若找不到空字符则为?strsz?。

注意

strnlen_s?与?wcsnlen_s?是仅有的不调用运行时制约处理的边界检查函数。它们是用于提供空终止字符串受限制支持的纯功能函数。

注意:计算大小时不包括'\0'

示例

#include <string.h>
#include <stdio.h>
 
int main(void)
{
    const char str[] = "How many characters does this string contain?";
 
    printf("without null character: %d\n", strlen(str));
    printf("with null character:    %d\n", sizeof(str));
}


without null character: 45
with null character:    46

注意:strlen计算时,一定要确保字符数组是以空字符结束,如果没有则可能沿着数组在内存中的位置不断向前寻找,知道遇到空字符才停下来。?

#include "stdafx.h"
#include <iostream>
#include <cstring>
 
int main(){
	char str[] = { 'H', 'e', 'l', 'l', 'o', ',', 'w', 'o', 'r', 'l', 'd' };
	size_t len = strlen(str);
	std::cout << "length is " << len << std::endl;
	return 0;
}
 
 
结果输出:
length is 23
请按任意键继续. . .

#include "stdafx.h"
#include <iostream>
#include <cstring>
 
int main(){
	char str[] = "Hello,world";
	size_t len = strlen(str);
	std::cout << "length is " << len << std::endl;
	return 0;
}
 
 
结果输出:
length is 11
请按任意键继续. . .

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:13:43  更:2022-10-17 12:15:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 6:04:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码