题
出于好奇,在C语言中比较两个全数字字符串的最安全/最快/最有效的方法是什么? 通用标签
解决方案
我认为
strcmp ()
,因为它不需要任何数字转换。但是在这种情况下,您需要确保其中一个存储仅包含数字字符的字符串。
您还可以在字符串上执行memcmp ()
EDIT1
正如其他人所指出的那样,您可以手动扫描前导零并通过将指针传递到第一个非零数字来调用strcmp ()
或memcmp ()
。
EDIT2
下面的代码告诉我我想说的话。这仅适用于整数,不适用于浮点数。 通用标签
对于浮点数,小数点后的零应手动切掉。
或者手动完成全部操作。
EDIT4
我也希望您看看此浮点代码。这将检测小数点前的前导零和小数点后的尾随零。例如
00000000000001.10000000000000
和1.1
将是以下代码的Equal
通用标签
使用前需要进行一些测试。
其他提示
str(n)cmp
是最快,最安全的。
假设您正在寻找它们的基础,strncmp
将是最快,最安全的方法,因为它无需进行任何转换即可直接进行比较。通常也认为它比strcmp
安全。
但是,如果您希望00
和0
相等,或者希望通过其他方式来表示相同的数字,则需要使用atoi
。
在我看来,“最安全”的方法可能是将两个参数都转换为整数然后进行测试,因为这样可以避免潜在的前导零问题。不过,它可能不是最快或最有效的方法。
您可以简单地使用以下内容:
if(strcmp(“ 123”,“ 123”)== 0)
{ 通用标签
}
其他
{ 通用标签
}
我认为它应该起作用。
我对整数建议这样: 通用标签
不隶属于 StackOverflow