这个问题让我很困惑-
我有一个数组(固定大小):
unsigned int i_block[15];
我有一个字符串(长度 <= 60):
"path/to/bla/is/bla"
我如何将字符串的字符存储在数组的空间中? 我正在考虑也许使用 memset,但我不知道这是否可行?
供引用: "如果文件的数据适合分配给数据指针的空间,则可以方便地使用该空间。例如,如果数据不超过 60 字节,ext2 将以这种方式存储符号链接(symbolic link)(通常是文件名)的数据(“快速符号链接(symbolic link)”)。”
来自
最佳答案
此代码假定 int
类型使用 4 个字节,因此 15 int
使用 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'
。应仔细检索字符串以解决此限制。
关于C,在大小为 15 的无符号整数数组的空间中存储长度 <=60 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38702702/