gpt4 book ai didi

c - 无法理解如何处理 C 字符串

转载 作者:行者123 更新时间:2023-11-30 16:26:25 25 4
gpt4 key购买 nike

我正在尝试使用 Mac OS X 的 listxattr C 函数并将其转换为 Python 中有用的东西。手册页告诉我,该函数返回一个字符串缓冲区,它是“简单的以 NULL 结尾的 UTF-8 字符串,并以任意顺序返回。缓冲区中的名称之间没有提供额外的填充。”

在我的 C 文件中,我似乎已正确设置它(我希望):

  char buffer[size];
res = listxattr("/path/to/file", buffer, size, options);

但是当我打印它时,我只得到第一个属性,它有两个字符长,即使它的大小是 25。所以然后我手动设置 buffer[3] = 'z' 和 low ,看什么时候我再次打印缓冲区,得到前两个属性。

我想我明白发生了什么。缓冲区是一系列以 NULL 结尾的字符串,一旦看到 NULL 字符就会停止打印。但是我该如何将整个序列解压到所有属性中呢?

我是 C 语言新手,并使用它来弄清楚用 C 扩展 Python 的机制,并遇到了这个问题。

最佳答案

  1. char *p = buffer;
  2. 使用strlen(p)获取长度。如果长度为0,则停止。
  3. 处理第一个 block 。
  4. p = p + 长度 + 1;
  5. 返回第 2 步。

关于c - 无法理解如何处理 C 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53070484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com