C 中的字符串比预期的要长

2023-12-11

这是我的代码

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

int main(){
    char pal[8] = "ciaooaic";
    char pal1[7] = "ciaoaic";
    int lenPal = strlen(pal);
    int lenPal1 = strlen(pal1);
    printf("strlen('%s'): %d\n", pal, lenPal);
    printf("strlen('%s'): %d\n", pal1, lenPal1);
    return 0;
}

问题是,当我运行此代码时,输​​出是:

strlen('ciaooaicP@'): 11
strlen('ciaoaic'): 7

第一个字符串在 P 和 @ 之间还有另一个不可打印的字符。我是菜鸟,所以也许我错过了一些明显的事情。有人能帮我吗?

edit:

只需多加一个空格即可,例如 char pal[9] = "ciaopanic"; char pal 1[8] = "混乱";

它有效,但为什么呢?我知道 \0 应该有一个空格,但是“ciaoaic”没有它就可以工作......


1.当您将它们传递给空终止符时,您不会为空终止符留出空间strlen(),因此您的代码显示未定义的行为 -

char pal[8] = "ciaooaic";
char pal1[7] = "ciaoaic";

留出空间'\0'。像这样声明和初始化 -

char pal[9] = "ciaooaic";
char pal1[8] = "ciaoaic";

2. And strlen()回报size_t not int,所以这样写 -

size_t lenPal = strlen(pal);
size_t lenPal1 = strlen(pal1);

and use %zu说明符打印这两个变量。

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

C 中的字符串比预期的要长 的相关文章

随机推荐

  • 通用属性的缺点?

    我在我的项目中使用通用属性 但我不知道 使用它们有什么缺点 请告诉我一个场景 它们有一个缺点 下面是我的部分代码 public class GenericResult
  • 比较两个频谱图以找到它们匹配算法的偏移量

    我每天通过互联网录制 2 分钟的广播 总是有相同的开始和结束歌曲 由于广播的确切时间可能会有所不同 或多或少有 6 分钟 因此我必须录制大约 15 分钟的广播 我希望确定这些歌曲在 15 分钟记录中出现的确切时间 这样我就可以提取我想要的音
  • 为什么 python xlrd 在打开 .xlsm 而不是 .xls 时出错

    Python 程序可以正常打开 xls 但无法打开 xlsm 并且会立即失败 xlrd open workbook Some filename xlsm 错误 发生异常 AttributeError bytes 对象没有属性 seek 任何
  • 拉取 JSON 数据

    我正在尝试从 json 数据获取事件日历 我只想突出显示日期 并在用户单击日期时在日历下方更新一个包含事件详细信息的 div 我的应用程序以以下形式提供 JSON Date 02 06 2012 Title Eat Bike and Swi
  • 创建 Zip,然后将文件夹复制到其中

    我正在尝试创建一个 zip 文件 然后将三个文件夹复制到其中 我在第 33 行字符 1 上收到错误 需要错误状态对象 我已经搜索和谷歌搜索 但似乎无法理解我正在阅读的内容或理解我真正需要搜索的内容 无论如何 这是我的代码 Option Ex
  • 如何才能让我的表单始终处于最重要的位置?

    我有这些光标形状的小表格 我需要始终将它们置于一切之上 FormStyle已经fsStayOnTop我使用这段代码 SetWindowPos tempCursor Handle HWND TOPMOST 0 0 0 0 SWP NOMOVE
  • Firefox 和 Chrome 在本地主机上运行缓慢;已知修复不适用于 Windows 7

    众所周知 当启用 IP6 时 Firefox 和 Chrome 在本地主机上速度很慢 在以前版本的 Windows 中 最简单的修复方法是从主机文件中注释掉这一行 如中所述这个问题的答案 1 localhost 然而 正如这个问题所指出的
  • php - 使用户能够收藏帖子

    在我的网站上 我希望允许用户收藏帖子 登录的用户被定向到一个显示所有帖子的页面 在每个帖子下我都放置了一个指向收藏夹的超链接 我希望文本从最喜欢变为最喜欢 反之亦然 我怎么做 HTML 和 PHP
  • 加载图像时如何运行 JavaScript 回调?

    我想知道图像何时完成加载 有没有办法通过回调来做到这一点 如果没有 有没有办法做到这一点 complete 回调 这是符合标准的方法 没有额外的依赖项 并且等待时间不会超过必要的时间 var img document querySelect
  • 如何仅使用 css 以 iphone 经典风格设置聊天气泡样式

    我试图创建一个 html 页面 它看起来类似于消息 线程视图 就像在我们的 android 和 iphone 设备中一样 这是我编码的内容 CSS 样式
  • 扁平化字典的字典

    如何在Python中展平字典的字典 并将它们放入列表中 例如 假设我有以下字典 data id1 x 1 y 2 z 3 id2 x 4 y 5 z 6 如何得到 id id1 x 1 y 2 z 3 id id2 x 4 y 5 z 6
  • 如何在Eclipse默认代码编辑器中添加监听器?

    我想向 Eclipse 中的默认代码编辑器添加一个侦听器 每当打开或关闭新代码文件时都应该触发它 有这样的东西吗 我用谷歌搜索了几个小时 但找到了一个可行的解决方案 我特别关注默认的 Java 代码编辑器 但是 一旦我知道如何连接到这样的编
  • 如何触发woocommerce回调函数?

    我正在尝试通过在浏览器中访问回调 URL 来测试我的回调函数是否有效http localhost 90 wordpress payment demo wc api callback handler 但我一直得到 1 这是我的回调函数 thi
  • 如何在 Greasemonkey 中用 img src url 替换图像链接

    从标题来看 这听起来像是一个重复的问题 但我要求的是帮助编写一个 Greasemonkey 脚本 该脚本获取 src url 中包含单词 thumbnails 的所有图像 将 thumbnails 替换为 images 然后将新的 url
  • 时钟分钟变化的 Java 事件监听器

    我正在寻找 Java 中监视计算机时钟 分钟 并在每次更改时触发方法 线程的最佳方法 因此 如果时间是 13 20 然后变为 13 21 则执行某些操作 因此 只要有微小的变化 就会触发一些代码 聆听时钟分钟部分变化的最佳方法是什么 谢谢
  • 使用 iTextSharp 解码为 FlateDecode 时,为什么我的图像会变形?

    将 PDF 中的图像解码为FlateDecode通过 iTextSharp 图像扭曲 我似乎无法弄清楚为什么 公认的bpp是Format1bppIndexed 如果我修改PixelFormat to Format4bppIndexed图像在
  • 如何从单个表单调用多个操作?

    我有一个 jsp 文件 其中有一个表单 它显示了我们拥有的 帐户 数据结构的数据 有一个按钮可以从该数据结构中删除数据
  • 当实现operator[]时,我应该如何包含边界检查?

    首先 我为这么长时间提出这样一个简单的问题表示歉意 我正在实现一个类 它充当空间填充曲线上非常长的一维索引或表示索引对应的笛卡尔坐标的 n 元组 class curvePoint public friend class curveCalcu
  • 如何跨浏览器检测 jQuery 中带有“required”属性的输入字段?

    我遇到了布尔值的轻微验证问题required表单字段上的属性 我正在标记我的字段
  • C 中的字符串比预期的要长

    这是我的代码 include