【刷点笔试面试题试试水】找错—使用strlen()函数代替sizeof计算字符串长度

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

问题:

解答:

cpp 复制代码
#include <iostream>
using namespace std;

void UpperCase(char *str)
{
	for (size_t i = 0; i < sizeof(str) / sizeof(str[0]); ++i)
	{
		if ('a' <= str[i] && str[i] <= 'z')
		{
			str[i] -= ('a' - 'A');
		}
	}
}

int main()
{
	char str[] = "aBcDe";
	cout << "The length of str is " << sizeof(str) / sizeof(str[0]) << endl;
	UpperCase(str);
	cout << str << endl;
	return 0;
}

运行结果:

注意:

  • 看似正确,其实错了两个地方,一是长度为5,sizeof计算多了一个字符串结束符.
  • 结果好像都转成了我们想要的,但是如果我换成32位的执行.

运行结果就出问题了.

这是因为sizeof()计算的时候,将将传入的数组当成指针了.

所以我们用strlen()来替换.

运行结果:

x86也一样可以哦.

相关推荐
会编程的小孩2 分钟前
C++ qt的安装
c++
宝绿特塑业再生科技11 分钟前
改性HDPE再生颗粒在户外家具挤出发泡板材中的色差控制与高品质价值重构
经验分享·科技·学习·生活·1024程序员节·户外家具
andrsted3 小时前
练题簿在线免费刷题:让整理过的资料,变成能反复练习的题库
学习·微信小程序·小程序·学习方法·刷题·1024程序员节
Alsn864 小时前
Windows 安装 Ollama 及本地模型部署
学习·1024程序员节
欣欣之王来了5 小时前
原始HTML插值:v-html指令的使用与安全风险
前端·学习·架构·项目·vue3教程
小成202303202656 小时前
C++~07补充
开发语言·c++
hold?fish:palm6 小时前
40 二叉树的直径
c++·leetcode
解决小子6 小时前
【虚幻引擎】【C++】【GAS框架】构建角色基类、属性集、数值钳制
c++·笔记·游戏引擎·虚幻·gas·能力系统
知识分享小能手7 小时前
C学习教程,从入门到精通,C语言学生信息管理系统 — 知识点详解(18)
c语言·学习·1024程序员节
破芽7 小时前
learn-claude-code-s05-s11-学习笔记
笔记·学习