gpt4 book ai didi

c - 如何比较C中字符串的结尾?

转载 作者:太空狗 更新时间:2023-10-29 16:21:17 27 4
gpt4 key购买 nike

我想确保我的字符串以“.foo”结尾。我正在使用 C,一种我并不完全熟悉的语言。我发现最好的方法如下。任何 C 专家都想确保我优雅而明智地做这件事吗?

int EndsWithFoo(char *str)
{
if(strlen(str) >= strlen(".foo"))
{
if(!strcmp(str + strlen(str) - strlen(".foo"), ".foo"))
{
return 1;
}
}
return 0;
}

最佳答案

不要对每个字符串多次调用 strlen。

int EndsWith(const char *str, const char *suffix)
{
if (!str || !suffix)
return 0;
size_t lenstr = strlen(str);
size_t lensuffix = strlen(suffix);
if (lensuffix > lenstr)
return 0;
return strncmp(str + lenstr - lensuffix, suffix, lensuffix) == 0;
}

int EndsWithFoo(const char *str) { return EndsWith(str, ".foo"); }

编辑:为学究添加了 NULL 检查。如果 str 和 suffix 都为 NULL,请争论是否应该返回非零值。

关于c - 如何比较C中字符串的结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/744766/

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