如果字符串中间出现空字符怎么办?

2024-04-08

我知道字符串的结尾由空字符表示,但我无法理解以下代码的输出。

#include <stdio.h>
#include <string.h>

int
main(void)
{
    char s[] = "Hello\0Hi";
    printf("%d %d", strlen(s), sizeof(s));
}

OUTPUT: 5 9

If strlen()检测到字符串在 o 末尾处结束,那么为什么不检测到sizeof()做同样的事情?即使它不做同样的事情,不是 '\0' A 空字符(即只有一个字符),所以答案不应该是 8 吗?


The sizeof运算符不会给出字符串的长度,而是给出其操作数类型的大小。由于在您的代码中操作数是一个数组,sizeof为您提供数组的大小,包括两者null人物。

如果是这样的话

const char *string = "This is a large text\0This is another string";
printf("%zu %zu\n", strlen(string), sizeof(string));

结果会非常不同,因为string是一个指针而不是一个数组。

注意:使用"%zu"说明符size_t这是什么strlen()返回,并且是由以下给出的值的类型sizeof.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果字符串中间出现空字符怎么办? 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • C# 异步等待澄清?

    我读了here http blog stephencleary com 2012 02 async and await html that 等待检查等待的看看它是否有already完全的 如果 可等待已经完成 那么该方法将继续 运行 同步
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • 如何在 Symfony 4 中使用事件处理异常?

    现在我正在尝试捕获这样的异常事件 try echo 1 0 catch Exception e subs new ExceptionSubscriber this gt dispatcher gt addSubscriber subs 我定
  • 是否应该始终使用 boost::ptr_vector 代替 std::vector ?

    这只是我遇到的一个概念性问题 在我当前的项目中 感觉我过度使用了 boostsmart ptr and ptr container图书馆 我正在创造boost ptr vectors在许多不同的对象中 并调用 Transfer 方法从一个对
  • AttributeError:“float”对象没有属性“lower”

    我面临这个属性错误 并且我陷入了如何处理浮点值 如果它们出现在推文中 的问题 流式推文必须小写并标记化 因此我使用了 split 函数 有人可以帮我解决这个问题 有任何解决方法或解决方案吗 这是error我正在 AttributeError
  • 如何清理redis中不活跃的玩家?

    我正在制作一个使用 redis 来存储游戏状态的游戏 它可以很好地跟踪位置和玩家 但我没有一个好的方法来清理不活跃的玩家 每当玩家移动时 这是一个半慢速移动游戏 想想每秒 1 5 帧 我就会用新位置更新哈希并删除旧位置键 跟踪活跃玩家的最佳
  • 在 Mac OS X 上使用 docx2txt 和 Git 对 Word .docx 文件进行版本控制

    On Git网站上有关于 Microsoft Word 版本控制的详细说明 doc文件与catdoc http git scm com book en Customizing Git Git Attributes http git scm
  • Android WebView LoadData - 土耳其字符

    如何在 webview 中将土耳其语字符 显示为 loadData 我的网络视图是 mWebView loadData detailsHtml text html UTF 8 thanks webView loadData htmlStr
  • 我需要进行哪些更改才能使 Magento 与 PHP 5.3 配合使用?

    我需要将我的服务器升级到 PHP 5 3 但安装了 Magento 而且我知道 Magento 不能很好地与 PHP 5 3 配合使用 我认为变化不会太大 根据我所读到的 但是 我想我应该向大众开放 有人成功做到这一点吗 如果是这样 你记好
  • 开关盒无法正常工作

    当我离开现场时 我发布了下面的代码ip空白 空并向其他字段赋值 toast总是给出消息KATimer is invalid or missing 我期望看到一个toast显示一条消息 指示空字段 但下面的代码 如果任何字段为空 它总是说KA
  • 有没有一种方法可以列出所有对象,例如使用同义词的视图?

    就像罐头上说的那样 如何确定哪些 SQL 对象正在使用给定的 SYNONYM 我想一种方法是搜索 PROC 或 VIEW 的所有内容并运行LIKE SYN NAME 但这看起来很笨拙 select from sys sql expressi
  • 如何在.NET MAUI 中创建可重用组件?

    我最近刚刚开始使用 Net MAUI 但现在我想知道如何使用一段代码 例如我的所有页面上都有一个自制的导航栏 因为在所有 10 个页面上编写相同的代码是没有意义的 我想知道是否有办法创建一个可以像 React 或 Angular 一样重用的
  • 使用 psycopg2 插入多行

    根据psycopg2 用一个查询插入多行 https stackoverflow com questions 8134602 psycopg2 insert multiple rows with one query 使用 psycopg2
  • Visual Studio Windows 窗体预览以不同的分辨率?

    我喜欢以 1680 x 1050 分辨率运行 Visual Studio 但是 我们的客户通常使用 1024 x 768 是否有某种方法可以使我的编辑器保持原始分辨率 但以不同的分辨率显示表单设计器 谢谢 Austin 我建议您购买一个额外
  • 如何获取 google+ 的公共数据以及如何使用 php 从我的网站发布到 google+

    我的网站和 google plus 之间的身份验证工作正常 但我的详细信息和我的活动现在没有显示 我们得到 Googleplus 的 getAccessToken 就像 access token ya29 AHES6ZSTauVKgrdDU
  • 继承后受保护的成员行为。

    我对受保护的标识符有一些疑问 在 K Sierra 编写的 Sun Certified Java Programmer Study Guide 的第一章中 我发现了以下信息 一旦包外子类继承了受保护的成员 该成员 由子类继承 就成为子类外部
  • 将 Pandas 数据帧转换为时间序列

    我有一个熊猫数据框 Out 57 lastrun rate 0 2013 11 04 12 15 02 0 1 2013 11 04 13 14 50 4 2 2013 11 04 14 14 48 10 3 2013 11 04 16 1
  • 迭代器的无限产量

    我正在尝试学习一些红宝石 想象一下 我正在循环并执行一个长时间运行的过程 在这个过程中 我希望获得一个旋转器 只要需要就可以 所以我可以这样做 a aNow 0 skip setup a big loop print a aNow aNow
  • 在 beautiful soup 中使用 lambda 函数

    尝试匹配包含某些文本的链接 我正在做 links soup find all a href lambda x org in x 但这会引发 TypeError argument of type NoneType is not iterabl
  • 如何设计一个同时安全的多用户 Ajax Web 应用程序

    我有一个网页 显示来自服务器的大量数据 通信是通过ajax完成的 每次用户交互并更改此数据 假设用户 A 重命名某些内容 时 它都会告诉服务器执行该操作 然后服务器返回新更改的数据 如果用户 B 同时访问该页面并创建一个新的数据对象 它将再
  • 添加依赖项和库 .jar 后无法解析 json import Intellij

    将在线源中的 json lib 2 4 jdk15 jar 添加到项目依赖项后 我似乎无法解决此问题 提供的屏幕截图显示了我正在做的事情的演练 是的 我多次尝试过 使缓存无效并重新启动 The error 这是我的项目结构 cmd 或 文件
  • 如果字符串中间出现空字符怎么办?

    我知道字符串的结尾由空字符表示 但我无法理解以下代码的输出 include