gpt4 book ai didi

在 C 中使用 strncpy 更有效地复制 n 个字符

转载 作者:行者123 更新时间:2023-12-01 08:35:59 24 4
gpt4 key购买 nike

我想知道考虑到 strncpy 字符的数量,是否有一种更清洁、更有效的方法来执行以下 max。我觉得我做得太过分了。

int main(void)
{

char *string = "hello world foo!";
int max = 5;

char *str = malloc (max + 1);
if (str == NULL)
return 1;
if (string) {
int len = strlen (string);
if (len > max) {
strncpy (str, string, max);
str[max] = '\0';
} else {
strncpy (str, string, len);
str[len] = '\0';
}
printf("%s\n", str);
}
return 0;
}

最佳答案

我根本不会为此使用 strncpy。至少如果我理解你想要做什么,我可能会做这样的事情:

char *duplicate(char *input, size_t max_len) {
// compute the size of the result -- the lesser of the specified maximum
// and the length of the input string.
size_t len = min(max_len, strlen(input));

// allocate space for the result (including NUL terminator).
char *buffer = malloc(len+1);

if (buffer) {
// if the allocation succeeded, copy the specified number of
// characters to the destination.
memcpy(buffer, input, len);
// and NUL terminate the result.
buffer[len] = '\0';
}
// if we copied the string, return it; otherwise, return the null pointer
// to indicate failure.
return buffer;
}

关于在 C 中使用 strncpy 更有效地复制 n 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10425137/

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