对数字字符串使用strcmp()时的混淆。

问题描述 投票:0回答:1
{
    char array[2][10]={"3234","5"};
    int n=strcmp(array+0,array+1);
    printf("%d",n);

}
  • 下面的代码打印-1,事件虽然是3234>5。
  • 但如果第一个数字是5234或6234等,它却打印1。
  • 结果背后的逻辑是什么? (是否只有第一个数字才被考虑?)

  • 那么,有没有一种方法可以比较两个数字串,而不比较它们的实际整数值呢?

c arrays string 2d strcmp
1个回答
1
投票

结果背后的逻辑是什么?

strcmp 比较字符串中的字符,用它们的值作为结果。unsigned char. 首先,它将一个字符串的第一个字符与另一个字符串的第一个字符进行比较。如果它们不同,如果第一个字符串的字符小于另一个字符串的字符,它就报告第一个字符串 "小于 "第二个字符串,如果第一个字符串的字符大于,它就报告 "大于"。如果字符相等,那么 strcmp 比较字符串的第二个字符,然后是第三个字符,以此类推。(如果一个字符串比另一个短,但直到其末端都是相同的,结束它的空字符将导致它比另一个字符串小。)

那么,有没有一种方法可以比较两个数字字符串,而不对它们的实际整数值进行比较呢?

目前还没有标准的库例程来解决这个问题。你可以为它写一个例程。

© www.soinside.com 2019 - 2024. All rights reserved.