C 在缓冲区中创建额外字节

2024-02-09

我今天一直在摆弄 C,当我注释掉这段代码中的第三个缓冲区时,我不明白输出的差异:

 #include <unistd.h>
 #include <string.h>
 #include <stdio.h>
 void main() {
     unsigned char letters[10];
    memset(letters, 0x00, 10);
    memset(letters, 0x41, 10);
    printf(letters);
    printf(" Total buffer len: %d bytes\n",strlen(letters));

     char nletters[10];
    memset(nletters, 0x00, 10);
    memset(nletters, 0x42, 10);
     printf(nletters);
    printf(" Total buffer len: %d bytes\n",strlen(nletters));

     int nums[10];
     memset(nums, 0x00, 10);
    memset(nums, 0x43, 10);
    printf(nums);
    printf(" Total buffer len: %d bytes\n",strlen(nums));   
 return 0;
}

不同之处在于 nums 缓冲区周围的注释被删除:

AAAAAAAAAA�7ǝ�U Total buffer len: 16 bytes
BBBBBBBBBBAAAAAAAAAA�7ǝ�U Total buffer len: 26 bytes

并保留缓冲区:

AAAAAAAAAA Total buffer len: 10 bytes
BBBBBBBBBBAAAAAAAAAA Total buffer len: 20 bytes
CCCCCCCCCC��U Total buffer len: 14 bytes

我不明白的是:

  1. 注释掉第三个缓冲区如何影响其他缓冲区的大小?

  2. 缓冲区末尾的额外字节是什么以及如何丢失/管理它们(如果我选择连接缓冲区)?

  3. 为什么当我选择是否注释第三个缓冲区时,打印缓冲区大小和初始化大小的差异不一致?

  4. 缓冲区2应该是10字节,为什么是20字节?我不希望是20个,我只要求10个。我认为这不无道理。


charC 中的字符串实际上被称为空终止字节串

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

C 在缓冲区中创建额外字节 的相关文章

随机推荐

  • 获取 DOM 元素的图像数据

    是否可以 通过标准 JS 或某些浏览器扩展 获取 DOM 元素的图像数据 我正在考虑这样的用法 创建一个离屏 DOM 元素 动态地用一些 CSS 样式的内容填充它 获取其图像数据 use the image data somehow 作为背
  • 如何结合单索引和多索引 Pandas DataFrame

    我正在尝试连接多个 Pandas DataFrame 其中一些使用多索引 另一些使用单个索引 作为示例 让我们考虑以下单索引数据帧 gt import pandas as pd gt df1 pd DataFrame single 10 1
  • Mysql即使id错误也返回结果

    我在 id 值之后添加随机字符串时遇到问题仍然查询返回结果 理想情况下 它应该返回空结果 mysql gt select from pricelists where id 1abcd id name mark
  • 使用 Jest/Typescript 测试 fs 库函数

    我正在尝试测试我编写的库函数 它在我的代码中工作 但无法使用 fs 的模拟进行测试 我有一系列函数用于处理封装在函数中的操作系统 因此应用程序的不同部分可以使用相同的调用 我曾尝试遵循这个问题 https stackoverflow com
  • Ruby:意外的输入结束,需要 if 语句的 keywords_end

    我使用 Java 工作了几个月 现在正在转回 Ruby 我从以下代码中收到一个奇怪的错误 def count divisors divisor hash 25 times do i divisor hash i find dividends
  • << 目标 c 枚举中的运算符?

    我正在寻找一些东西并进入这个枚举是apple UITableViewCell h 如果这是微不足道的 我很抱歉 但我想知道 好奇这有什么意义 我知道 ruby 中的 enum UITableViewCellStateDefaultMask
  • 使用 javascript/jquery 用 html 填充 div

    这是我的问题 我有一个div div div 我想在某些条件下用其他代码填充它 p Showing results Key img src lt 1 nbsp img src lt 2 nbsp img src lt 3 nbsp img
  • FTP 脚本在放置后保留文件的时间戳

    我知道 FTP 不支持传输和保留文件日期 时间戳 想知道是否有人有任何想法 脚本 Shell perl 可以在放置操作后保留传输文件的时间戳 您是否可以尝试以 tar 文件传输文件 从 tar 中提取后 时间戳将被恢复
  • 处理器“org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor”执行期间出错

    我正在尝试使用 thymeleaf 和 Spring boot 构建简单的搜索选项卡 这是我的代码和 html 文件 scCountry html
  • React Native (expo) 加载 Markdown 文件

    我在加载 Markdown 文件时遇到一些问题 md 进入我的本机反应 非独立的世博项目 找到了这个很棒的包 可以让我渲染它 但不知道如何加载本地 md文件作为字符串 import react from react import PureC
  • 如何阻止特定网站浏览器代理?

    最近 我遇到了数据挖掘机器人的一些问题 每天在一天中的某些时间从我的网站提取数据 这不仅会浪费我的带宽 还会向我的谷歌分析提供错误的数据 他们通常使用 amazonaws IP 进入 但最近他们已切换到其他主机 保持不变的是它们使用相同的用
  • 使用 jFreeChart 绘制磁滞回线

    我需要绘制磁滞环 然后计算环内闭合的面积 我正在使用 jFreeChart 考虑以下数据 hyst 0 0 hyst 1 0 hyst 2 0 0098 hyst 3 0 0196 hyst 4 0 0489 hyst 5 0 0879 h
  • Eclipse:“重构 - 重命名”完全混乱,替换文件中的任意字符

    在重构类名时 Eclipse 最近表现出非常奇怪的行为 例如 让我们看一下我们的一个课程 public class CampaignCSVPanel extends ContentPanel private FileUploadField
  • 如何向现有对象方法添加装饰器?

    如果我使用我无法控制的模块 类 我将如何装饰其中一个方法 我明白我可以 my decorate method target method 但我希望这种情况发生在任何地方target method无需执行搜索 替换即可调用 有可能吗 不要这样
  • Python DataFrame打印样式随机变化

    我正在使用 python 3 7 7 和 Visual Studio 代码 1 58 2 我正在使用 pyodbc 查询 mysql 数据库 但我相信我看到的问题发生在这之外 import pyodbc as po import panda
  • 如何删除领域对象及其子关系?

    我有一个大对象 它与其他对象有很多关系 这些对象也与其他对象有关系 因此 当我删除根对象时 我发现只有父对象被删除 而其所有关系都没有被删除 有没有办法在同一事务中删除整个树 领域不支持cascading delete目前 您可以为该功能投
  • 锁定(“Kiosk 模式”)Android 设备 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 在满足以下要求的同时 您将如何锁定 Android 设备 访问 Wifi 网络 访问单个公司的应用程序 能够下载 更新到公司应用程序的新版本 访问蓝牙
  • 嵌套 iframe,又名 Iframe Inception

    我正在尝试使用 jQuery 访问 div id element div div 所有 iframe 都位于同一域中 不存在 www 非 www 问题 我已成功选择第一个 iframe 中的元素 但未成功选择第二个嵌套 iframe 中的元
  • 单击图像后未出现日期选择器

    我有一个显示日期选择器的小提琴 我在下面编写了相同的代码 但没有任何反应 我做错了什么 当我单击绿色时 不会生成日期选择器 但在小提琴中它运行良好 我在哪里做错了 http jsfiddle net cBwEK 10 http jsfidd
  • C 在缓冲区中创建额外字节

    我今天一直在摆弄 C 当我注释掉这段代码中的第三个缓冲区时 我不明白输出的差异 include