你会计算C字符串长度吗?

C/C++/MFC 字符串长度计算和判空 一. C/C++ 字符串长度计算 char[]/char * 字符串(C字符串) 计算C字符数组占用字节大小 sizeof(chStr); 计算字符实际长度 不含’\0’ size_t strlen(const char* str) :ASCII字符串 size_t wcslen(const wchar_t *str) :宽字符串 std::string 字符串 CString 字符串 二. C/C++ 字符串判空 二级标题 三级标题 四级标题 五级标题 六级标 阅读详情

原文 不见得你会计算C字符串长度,优快云同步发布。

转载请注明出处,谢谢!


无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点 这里 可以跳转到教程。

在这里插入图片描述

C 字符串

在 C 语言中,字符串实际上是使用字符 '\0' 终止的一维字符数组。

以下几种方式表示的都是 C 字符串的正确表达方式。

// 要以 '\0' 结尾
char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

// 要以 '\0' 结尾
char greeting[] = {'H', 'e', 'l', 'l', 'o', '\0'};

// 默认会在末尾增加'\0'
char greeting[] = {"Hello"};

// 上面的简写形式
char greeting[] = "Hello";

// 默认会在末尾增加'\0'
char *greeting = "Hello";

看下面另外一种声明方式:

char greeting[] = {'h', 'e', 'l', 'l', 'o'};

printf("greeting: %s\n", greeting);

输出结果:

greeting: hello\376

这个结果在不同编译器下面可能还会不一样,总之输出都不是我们想要的结果。这种方式创建的字符串没有 '\0',不算是真正的 C 字符串,所以建议大家在声明 C 字符串的时候使用字符指针(char *)的方式。

string.h 里面声明了很多关于操作 C 字符串的库函数。

字符串长度

这里在说计算字符串长度的前提是字符编码都是按照UTF-8(中文占用3个字节,英文占用1个字节)的编码形式为前提的。我们先来看下面这个例子,如下:

char *greeting1 = "hello";
char greeting2[] = {'h', 'e', 'l', 'l', 'o'};
char greeting3[] = {'h', 'e', 'l', 'l', 'o', '\0'};
char greeting4[] = "hello";
    
printf("greeting1 sizeOf: %ld, strlen: %ld\n", sizeof(greeting1), strlen(greeting1));

printf("greeting2 sizeOf: %ld, strlen: %ld\n", sizeof(greeting2), strlen(greeting2));

printf("greeting3 sizeOf: %ld, strlen: %ld\n", sizeof(greeting3), strlen(greeting3));

printf("greeting4 sizeOf: %ld, strlen: %ld\n", sizeof(greeting4), strlen(greeting4));

如果你能说出上面 printf 的结果,基本上关于计算字符串长度的问题就迎刃而解了。

按照 UTF-8 编码,上面例子的输出结果如下所示:

greeting1 sizeOf: 8, strlen: 5
greeting2 sizeOf: 5, strlen: 7
greeting3 sizeOf: 6, strlen: 5
greeting4 sizeOf: 6, strlen: 5

如果输出结果令你无法相信,可以选择继续往下看或者你自己写代码试试。

sizeof、strlen

在 linux.die 可以查到 strlen 的说明,如下:

Synopsis:
#include <string.h>
size_t strlen(const char *s);

Description:
The strlen() function calculates the length of the string s, excluding the terminating null byte (aq\0aq).

Return Value:
The strlen() function returns the number of bytes in the string s.

函数 strlen 返回字符串里的字符数,不包括终止字符 '\0',这里注意 strlen 是一个 C 的函数,而 sizeof 只是一个操作符。

我们知道,sizeof 操作符的参数可以是数组、指针、类型、对象、函数等,函数 strlen 的参数只能是字符串。

对于 sizeof, 其参数不同时,其返回的值也不一样,如下:

1、数组:编译时分配的数组空间大小;
2、指针:存储该指针所用的空间大小(32位机器上是4,64位机器上是8);
3、类型:该类型所占的空间大小;
4、对象:对象的实际占用空间大小(这个指的是在 C++ 中);
5、函数:函数的返回类型所占的空间大小。函数的返回类型不能是 void 类型;

那我们再回头看看上面的例子,我把要说明的写在注释上面了。

// 注意这里是指针
char *greeting1 = "hello";

// 没有结束符 '\0',其 strlen 结果不确定
char greeting2[] = {'h', 'e', 'l', 'l', 'o'};

char greeting3[] = {'h', 'e', 'l', 'l', 'o', '\0'};
char greeting4[] = "hello";
    
/* 结果是 8、5 */
/* greeting1是指针,sizeOf计算的是其存储该指针所用的空间大小,因为我使用的是64位 macOS,所以输出是8 */
/*strlen 计算的是字符个数但是不包括结束符 '\0'*/
printf("greeting1 sizeOf: %ld, strlen: %ld\n", sizeof(greeting1), strlen(greeting1));

/* 结果是 5、7 */
/* sizeof 计算的是编译时分配的数组空间大小,这里是5 */
/* greeting2没有结束符,strlen 的计算结果不确定 */
printf("greeting2 sizeOf: %ld, strlen: %ld\n", sizeof(greeting2), strlen(greeting2));

/* 结果是 6、5 */
/* sizeof 计算的是编译时分配的数组空间大小,这里是6,因为多了结束符 */
/*strlen 计算的是字符个数但是不包括结束符 '\0'*/
printf("greeting3 sizeOf: %ld, strlen: %ld\n", sizeof(greeting3), strlen(greeting3));

/* 结果是 6、5,这里类似上面的情况,不再赘述 */
printf("greeting4 sizeOf: %ld, strlen: %ld\n", sizeof(greeting4), strlen(greeting4));

小结:

1、sizeof 是一个操作符,而 strlen 是 C 语言的库函数。

2、sizeof 的参数可以是任意数据类型或者表达式,而 strlen 只能以结尾为 '\0' 的字符串作参数。

3、sizeof 的结果在编译时就计算出了,而 strlen 必须在运行时才能计算出来。

4、sizeof 计算数据类型占内存的大小,strlen 计算字符串实际长度,要记住 strlen 计算出来的结果不包括结束符 '\0'。

5、sizeof 反应的并非真实字符串长度而是所占空间大小,所以memset 初始化字符串的时候用 sizeof 较好。

6、系统函数返回值是 char * (字符指针)类型的会在末尾加上结束符 '\0'。

7、无论是 sizeof 还是 strlen 计算结果的单位都是字节。

我们还需要注意一点,strlen 函数,当数组名作为参数传入时,实际上数组就退化成指针了。举个例子,如下图所示:

可以看出传入进来的参数会被退化为指针。

探索无止境

在文章的开始,我给出了几种 C 字符串的正确表达方式,那我们再来看另外一种。

char greeting[4] = "blog";

这种方式看起来好像很完美的样子,其实是不对的,写个例子给大家,如下:

int main(int argc, const char *argv[])
{
	char greeting[4] = "blog";
	size_t len = strlen(greeting);
	printf("greeting len: %ld\n", len);
	printf("greeting: %s\n", greeting);
	
	return 0;
}

编译运行,结果如下:

greeting len: 10
greeting: blog\330\365\277\357\376

苍天呀,这结果让人无语。。。

对于 char greeting[4] = "blog" 其实是定义一个长度为 4 的字符数组,但是字符串 "blog" 实际是要包括结束符 \0 的,也就是说下面的代码

char greeting[4] = "blog";

本质和下面代码是一样的,如下:

char greeting[] = {'b', 'l', 'o', 'g'};

显然是不正确的,那我们修改一下代码,如下:

int main(int argc, const char *argv[])
{
	// 注意这里是 5
	char greeting[5] = "blog";
	size_t len = strlen(greeting);
	printf("greeting len: %ld\n", len);
	printf("greeting: %s\n", greeting);
    
	return 0;
}

或者这样写:

int main(int argc, const char *argv[])
{
	// 这里干脆不要写数字
	char greeting[] = "blog";
  	size_t len = strlen(greeting);
	printf("greeting len: %ld\n", len);
	printf("greeting: %s\n", greeting);
    
    return 0;
}

这样修改后,再编译运行结果就对了,如下:

greeting len: 4
greeting: blog

我们知道的东西是有限的,我们不知道的东西则是无穷的。
在这里插入图片描述

【实战指南】从零构建UNet多分类分割数据集:标注、转换与训练全流程 本文提供了一份从零构建UNet多分类分割数据集的完整实战指南。详细介绍了使用Labelme进行图像标注的核心技巧与规范,并通过Python脚本将标注结果转换为模型可用的VOC格式。最后,指导如何修改经典的PyTorch版UNet代码,以适配自定义数据集并进行训练与测试,帮助读者完成从数据准备到模型训练的全流程。 阅读详情

相关推荐

Mamba再封神!与YOLO结合,拿下二区!好发不卷!

相比传统的YOLO改进,Mamba是新技术,两者结合尚在蓝海阶段,可发挥空间大!更为关键的是,它在检测精度和速度方面,都让以往的YOLO模型难以望其项背!比如代表模型Mamba YOLO,便在参数减少45.5%、FLOPs减少50%的同时,精度还比YOLOv8高6.1%!这主要得益于,Mamba能够捕捉长期依赖关系,而YOLO则擅长捕捉局部特征,两者能够优势互补,且Mamba线性复杂度的特性,也有利于提高计算效率!为了让大家能够紧跟前沿发展,找到更多灵感启发,我给大家10种。

2401_88190197的博客 2509

数据结构:字符串

数据结构:字符串

m0_64087341的博客 6182

用MFRC522+STM32打造智能门禁:从硬件选型到云端控制全流程

本文详细介绍了基于STM32微控制器和MFRC522射频模块构建智能门禁系统的完整流程。从硬件选型、电路设计、底层驱动开发,到系统软件架构与状态机设计,并最终实现通过ESP8266模块接入云端平台(如OneNET)进行远程控制和数据可视化。项目深入探讨了MFRC522的SPI通信、卡片操作流程、天线调试以及云端MQTT集成等关键技术,为嵌入式开发者提供了一个从本地感知到云端管控的物联网项目实战参考。

raspberrypi5的博客 742

C语言之 字符串长度的计算方法

特别注意 (1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!! 1、不带转义字符的字符 如:“abc!x=/”,其长度为7 2、带转义字符的字符串 (1)字符串“abc\n”:其中的'\n'为转义字符(换行符),计算字符串长度时只能计作一个字符,所以该字符串的长度为4(而 不是5)。 ...

CFY的博客 14万+

Spring Boot Swagger未授权访问漏洞:原理、风险与修复方案详解

在微服务架构中,API文档管理是开发与运维的重要环节。Swagger作为RESTful API文档生成与调试的标准化工具,通过OpenAPI规范自动生成交互式接口文档,极大提升了开发效率。然而,其默认配置往往缺乏访问控制,导致文档端点直接暴露,形成未授权访问漏洞。从技术原理看,该漏洞源于Spring Boot等框架集成Swagger时,相关端点未纳入安全框架的拦截范围,攻击者可通过扫描常见路径获取完整的接口定义与数据结构。这不仅会造成敏感信息泄露,更可能成为越权操作、数据篡改等深度攻击的入口点。在工程实践中

weixin_42524171的博客 500

Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】

本文章是Unity零基础到入门专栏的系列文章。 适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习! 本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON

努力前行,总会成为自己心中的那道光 8万+

计算字符串长度的五种方法

方法一; ------------------------------------------------------------ 方法二; ------------------------------------------------------------ 方法三; ------------------------------------------------------------ 方法四利用sizeof(); sizeof(arr)-1,减1是因为当使用""向数组

m0_72945550的博客 2万+

30天入门 SAP BTP 开发系列之十八:保姆级教程 - 如何部署 SAP UI5 到 SAP BTP Cloud Foundry 环境

本文摘要: 本文详细介绍了如何将SAP UI5应用部署到Cloud Foundry环境。首先需完成前17篇教程学习,创建SAP BTP子账户并启用Cloud Foundry环境。在SAP Business Application Studio中创建Fiori开发空间,导入GitHub上的UI5项目代码。通过npm run build命令打包成mtar文件后,使用cf deploy命令部署到Cloud Foundry。部署成功后,可在BTP控制台查看应用或通过命令行获取访问URL。整个过程涵盖了环境准备、代码

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1020

三种方法求字符串长度

在求字符串长度时,第一时间会想到运用strlen这个函数,但对于初学者来说,除了掌握这个函数之外,还应当自己写函数来实现相似的功能。 接下来我列举了三种方法来求字符串长度,供大家参考: (1)运用strlen 注意点:运用该函数时需注意包含string.h头函数 #include<stdio.h> #include<string.h> int main() { char ch[] = "abcdefg"; int len = strlen(ch); printf("字

staticfall的博客 5万+

基于Python的链家与贝壳租房数据爬取及城市性价比分析

本文通过Python爬虫技术,实现对链家和贝壳平台全国主要城市租房数据的采集与分析。研究使用requestsSelenium和Playwright等现代化爬虫工具,结合代理IP和验证码识别技术应对反爬机制。采集的数据经过清洗后,从多维度分析不同城市租房市场的价格分布、面积特征和性价比差异,并使用可视化技术展示分析结果。本研究为租房者提供决策参考,也为租房市场研究提供数据支撑。关键词:Python爬虫;租房数据;数据分析;链家;贝壳。

2201_76125261的博客 530

RH850系列芯片深度剖析 1.5-链接(ld)文件解析

基础编译过程分为四个阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)。执行这四个阶段的程序(预处理器、编译器、汇编器、和链接器)一起构成了编译系统。CONSTANTS接下来的内存空间定义部分会使用这些常量来定义内存空间的范围,理论上来说不定义常量也没有影响,直接用魔鬼数字代替,定义常量的主要目的就是方便理解以及方便修改;从示例中可以看出,常量的值可以为16进制或者10十进制,而且10进制支持数量级单位(k级,M级);

本博客专注于嵌入式软件领域技术分享。 1430

计算字符串长度的三种方法(库函数 指针 )【详解】

方法总结

m0_74308260的博客 1万+

【零基础入门unity游戏开发——2D篇】SpriteEditor图片编辑器

【零基础入门unity游戏开发——2D篇】SpriteEditor图片编辑器

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2331

C/C++计算字符串的长度

C/C++语言计算字符串长度 1.自定义函数求长度 2.使用strlen()函数 3.使用sizeof()操作符 4.使用length()函数 利用自定义函数的方法: int cont_str(char *s) { int i = 0; while ( str[i++] != '\0') ; return i; } 利用string头文件中的strlen()函数: strlen(st...

qq_41823255的博客 3万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C语言获取字符串长度的几种方法

在C语言中,想要获取字符串长度可以有很多方法,下面分别介绍 一、使用sizeof()运算符 在C语言中,sizeof() 是长度的运算符,括号中可以放入数据类型或者表达式,一般我们用来计算字符串长度。 基本用法: int i=10; sizeof(i);//表达式 char str[]="hello world"; sizeof(str); sizeof(double);//数据类型 在使用sizeof()求字符串长度时,会将 ‘\0’ 也计算到字符串长度中。例如"abcd"用sizeof()求长度会

st66688的博客 20万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C语言 计算字符串长度的几种方法

C语言 计算字符串长度的几种方法 C语言计算字符串长度,可以手动计算也可以使用库函数或者sizeof()操作符。 自定义函数求长度 使用strlen()函数 使用sizeof()操作符 自定义函数 int cont_str(char *s) { int i = 0; while ( str[i++] != '\0'); return --i; } 使用string头文件中的strlen()函数 strlen(str); //假设str为待求的字符串数组名 使用size

sungancd的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

C语言计算字符串长度的几种方法

C语言计算字符串长度的几种方法

alvincat的博客 15万+

(C语言)求字符串长度的四种方法

用四种方法求字符串长度

m0_64051621的博客 9万+

【C语言】字符串中的转义字符与字符串的长度

提示: (1)计算字符串长度时关键是要注意辨认转义字符; (2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!! 示例: 1、不带转义字符的字符串   如:“abc!x=/”,strlen求其长度为 7,但是因为字符串在末尾还有一个终止符‘\0’,因此字符串占8个字节,长度为8. 2、带转义字符的字符串   (

浮城大亨的专栏 1万+

C语言计算字符串长度的方法

C语言计算字符串长度的方法 思路分析 字符串的结束标志是’\0’,因此计算字符串的长度的核心思想就是通过字符指针顺序检索每一个字符,直到检测到’\0’为止,以下是实现该算法的几种方式。 代码实现 1.用while循环实现 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include<windows.h> int...

qq_42613519的博客 5071

C语言字符串长度计算

在C语言的应用过程中经常性的会用到字符串,以及对字符串的长度进行计算的问题。 首先大家常用的办法是使用strlen函数和sizeof关键字进行设计。 sizeof()返回字节数,strlen()返回的是字符数。 例如: char strry[20] = "hello"; #define string_length "abcd" sizeof(strry); 使用sizeof计算结果为...

天和地丰 9706

C中计算字符串长度

1.除了使用strlen()函数,和定义指针推移计算之外的字符串长度计算 #include <stdio.h> #include <stdlib.h> int fun(char *s) { char *t=s; while(*t++); t--; return(t-s); } int main() { int i; char a[20]="dingji...

qq_18671205的博客 7934

字符串长度的计算与字符串比较

字符串长度的计算 (1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。所以,遇到反斜杠时要特别注意!!! 1、不带转义字符的字符串   如:“abc!x=/”,其长度为 7 2、带转义字符的字符串   (1) 字符串“abc\n”:其中的’\n’为转义字符(换行符),计算字符串长度时只能计作一个字符,所以该字符串的长度为4(而不是5)

TS1130的专栏 9745

计算输入字符串的长度c语言,C语言统计输入的字符串的长度

很多情况下,我们需要知道用户输入的字符串的长度,以便进行下一步工作。很多读者立即想起了strlen()函数,其实是有问题的,请看下面的代码:#include #include int main(){char str[21];int strLen;printf("Input your string: ");scanf("%s", str);strLen = strlen(str);printf("s...

weixin_28686771的博客 8037

C语言中计算字符串长度的函数

1. strlen函数求得的字符串长度是从字符串第一个元素到第一个'\0'之间元素的个数(如果字符串中间有'\0',则结果不是整个字符串的长度),同时不包括该'\0' 2. sizeof求得的结果是存储该字符串的变量占用的空间大小,因而一定会包括'\0'.若'\0'后还有空余的空间,也会包含到结果里面 解释(与2种求值方式的实现原理有关): 1. strlen()的一种实现就是遍历字符串

IT小石头 4万+

【C语言】计算最长的字符串长度

本题要求实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。 函数接口定义: int max_len( char *s[], int n ); 其中n个字符串存储在s[]中,函数max_len应返回其中最长字符串的长度。 裁判测试程序样例: #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAXN 10 #define MAXS 20 int max_len( cha

tianty1121的博客 6796
上一篇: C语言中free、malloc 等内存管理函数
下一篇: C函数中返回字符数组
veryitman
博客等级 码龄16年 472粉丝 310原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值