当前位置: 首页 > news >正文

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

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

问题:

在这里插入图片描述

解答:

#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也一样可以哦.
在这里插入图片描述


http://www.mrgr.cn/news/40033.html

相关文章:

  • 新质农业——水资源可持续管理
  • DMA+AD
  • 递归算法介绍和【题解】——数楼梯
  • 【min25筛】【CF2020F】Count Leaves
  • 【Y005】基于springboot+vue实现的社团管理系统
  • Python入门:深入了解__init__.py 文件(如何实现动态导入子模块)
  • 笔试-笔记
  • C++之 友元重载 以及最常用的几种友元函数
  • CHI write 传输——CHI(5)
  • 软件自动化测试基础:python运算符精讲
  • PCL库简单的icp配准
  • 监控告警功能详细介绍及操作演示:运维团队的智能保障
  • Chrome浏览器的C++内存管理技术揭秘
  • 前端vue相关常见面试题,包含MVVM、双向绑定原理、性能优化、vue2和vue3性能对比等
  • c++-类和对象-设计立方体类
  • 【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
  • 蓝鹏螺纹钢测径仪的三大测量要点 纵肋 横肋 基圆
  • 【C++ STL】深入理解string类的底层实现
  • Temporal Dynamic Quantization for Diffusion Models阅读
  • 计算机知识科普问答--24(116-120)