gpt4 book ai didi

C - 带有格式化字符串的 strcmp()

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:21 27 4
gpt4 key购买 nike

我尝试使用 strcmp() 比较字符串,但是当我尝试比较格式化字符串时,它不起作用,例如:

if(strcmp(buffer, ("Number %d", 4)) == 0)
{
// do stuff
}

我如何在 C 语言中比较格式化字符串?

最佳答案

函数参数列表中的符号 ("Number %d", 4) 是分隔两个表达式的逗号运算符,其中第一个 ("Number %d") 被评估(因为它的副作用——只有没有副作用,所以一个好的编译器可能会警告这一点)并丢弃结果,第二个结果被评估并作为参数传递给函数—— strcmp()

编译器应该提示 strcmp() 的参数 2 的类型不匹配; 4 不是可以传递给 strcmp() 的字符串。如果您的编译器没有报错,您需要了解如何让它报错。

这会起作用:

char formatted[32];
snprintf(formatted, sizeof(formatted), "Number %d", 4);
if (strcmp(buffer, formatted)) == 0)
{
/* do stuff */
}

关于C - 带有格式化字符串的 strcmp(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56615666/

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