有没有办法使我的弦长均匀?
编辑: 我需要在结构中具有偶数长度的几个字符串。像这样:
struct msg { char * first; char * second; char * third; };
所以最后还是类似第一个字符串“ hi \ 0 \ 0”第二个字符串“ hello \ 0”第三个字符串“ byebye \ 0 \ 0”,我需要随时更改它们,并且它们是动态分配的。 / p>
答案 0 :(得分:1)
创建一个strdup_even()
。
根据需要分配内存以复制字符串,再加上1则可以使“偶数”。
char *strdup_even(const char *str) {
size_t len = strlen(str) + 1; // Size needed for the _string_
size_t len2 = len + len % 2; // Even allocation size
char *copy = malloc(len2);
if (copy) {
memcpy(copy, str, len);
if (len2 > len) {
copy[len] = '\0';
}
}
return copy;
}
样品用量
struct msg m;
m.first = strdup_even("hi");
m.second = strdup_even("hello");
答案 1 :(得分:0)
使用malloc()
和realloc()
:
char *string = malloc(STRING_SIZE);
strcpy(string, "hi");
string = realloc(string, STRING_SIZE+1);
string[STRING_SIZE] = '\0';