出于好奇,在C语言中比较两个全数字字符串的最安全/最快/最有效的方法是什么? 通用标签

有帮助吗?

解决方案

我认为

strcmp (),因为它不需要任何数字转换。但是在这种情况下,您需要确保其中一个存储仅包含数字字符的字符串。

您还可以在字符串上执行memcmp ()

EDIT1

正如其他人所指出的那样,您可以手动扫描前导零并通过将指针传递到第一个非零数字来调用strcmp ()memcmp ()

EDIT2

下面的代码告诉我我想说的话。这仅适用于整数,不适用于浮点数。 通用标签

对于浮点数,小数点后的零应手动切掉。

或者手动完成全部操作。

EDIT4

我也希望您看看此浮点代码。这将检测小数点前的前导零和小数点后的尾随零。例如

00000000000001.100000000000001.1将是以下代码的Equal 通用标签

使用前需要进行一些测试。

其他提示

str(n)cmp是最快,最安全的。

假设您正在寻找它们的基础,strncmp将是最快,最安全的方法,因为它无需进行任何转换即可直接进行比较。通常也认为它比strcmp安全。

但是,如果您希望000相等,或者希望通过其他方式来表示相同的数字,则需要使用atoi

在我看来,“最安全”的方法可能是将两个参数都转换为整数然后进行测试,因为这样可以避免潜在的前导零问题。不过,它可能不是最快或最有效的方法。

您可以简单地使用以下内容:

if(strcmp(“ 123”,“ 123”)== 0)

{ 通用标签

}

其他

{ 通用标签

}

我认为它应该起作用。

我对整数建议这样: 通用标签

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top