0

这个问题完全把我弄糊涂了——

我有一个数组(固定大小):

unsigned int i_block[15];

我有一个字符串(长度 <= 60):

"path/to/bla/is/bla"

我将如何将字符串的字符存储在数组的空间中?我在考虑也许使用 memset,但我不知道这是否可行?

供参考:“如果文件的数据适合为指向数据的指针分配的空间,则可以方便地使用该空间。例如 ext2 以这种方式存储符号链接的数据(通常是文件名),如果数据不再超过 60 个字节(“快速符号链接”)。”

来源

4

1 回答 1

2

此代码假定该int类型使用 4 个字节,因此 15int使用 60 个字节。

您可以这样存储字符串:

size_t len = strlen(str);
if (len <= sizeof i_block) {
    memset(i_block, 0, sizeof i_block);
    memcpy(i_block, str, len);
}

应该填充数组以'\0'保持清洁并提供一种判断字符串长度的方法。上面的代码简单易读。您可以复制字符串,只需将缓冲区的其余部分设置为 0,对memset.

请注意,如果字符串长度为 60,则'\0'数组末尾将没有尾随。应仔细检索该字符串以解决此限制。

于 2016-08-01T15:42:49.400 回答