0

我有一个简单的 C 代码需要与数字进行比较。但是数字是字符数组。哪种方法可以快速比较这些数字 1) 使用 strcmp 函数与数字数组进行比较。2)使用 atoi 函数将每个数字字符串转换回数字,然后比较两者。

最后,我必须将这些数字放回文本文件中。

int main(int argc, char* argv[]){
char nubmer1[] = "12823423";
char number2[] = "12453453";

//compare logic here. and need help with this.

//print to .txt file logic here. i have this with me.
}
4

5 回答 5

4

如果通过“比较”您需要知道它们是否不相等,strcmp 是最快的,因为将它们转换为整数将包括扫描字符串并在进行比较之前进行一些乘法运算。

于 2012-08-03T07:57:51.720 回答
1

但这不会是正确的。如果你有前导0怎么办?strcmp 不会匹配它,但转换为数字会。

在决定之前,您应该考虑这是否重要。如果数字始终保证为纯整数,则去除前导零然后 strcmp 将起作用。

于 2012-08-03T08:03:54.557 回答
0

首先,您需要有一个统一的、预定义的数字表示格式。这简化了以下逻辑。

您可以检查两个数字是否相等,建议使用 strncmp() == 0。(但出于安全原因,请避免使用 strcmp)。

如果要检查一个数字是大于还是小于另一个数字: 1. 首先检查它们是正数还是负数。2.如果条件1为真,检查字符串长度。长度越大的显然越大。否则检查具有 -ve 符号的哪个小于正数或无符号数。3. 如果两个字符串的长度相同,则逐字节比较,找出哪个更大或更小。注意当比较负数和正数时,逻辑是不同的。-2<-1,但 +2>+1

您可以根据您的设计在上述给定逻辑中进一步优化。

您不需要将它们转换为整数以进行 >、<、= 等操作,除非您正在处理非常大的数字并且必须进行一些算术计算。

于 2012-08-03T08:49:05.557 回答
0

strcmp 将检查两个数字是否相等。如果两个数字的长度不相等,它不会检查大于或小于的情况。所以首先使用 strlen 进行检查,如果它们的长度相等,则使用 strcmp 进行检查。

于 2012-08-03T08:02:27.677 回答
-1

我认为您可以对此进行实验,编写一个测试程序,这对您来说是件好事。

于 2012-08-03T08:18:12.470 回答