哪种方法很快,比较两个数字字符串或将它们转换为nunber然后进行比较

时间:2012-08-03 07:52:12

标签: c

我有一个简单的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.
}

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

但它不正确。如果你有领先的0怎么办? strcmp将不匹配,但转换为数字将。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

根据您的设计,您可以根据需要在上面给出的逻辑中进一步优化。

除非你处理的是非常大的数字并且必须进行一些算术计算,否则你不需要将它们转换为整数来执行类似>,<,=和stuff的操作。

答案 4 :(得分:-1)

我认为你可以做一个实验,写一个测试程序,对你来说很好。