繁体   English   中英

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

[英]C - strcmp() with formatted strings

我正在尝试使用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 */
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM