繁体   English   中英

对数字字符串使用 strcmp() 感到困惑

[英]Confusion with usage of strcmp() for number strings

{
    char array[2][10]={"3234","5"};
    int n=strcmp(array+0,array+1);
    printf("%d",n);

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

  • 那么,有没有办法比较两个数字字符串,而不用比较它们的实际 integer 值?

结果背后的逻辑是什么?

strcmp比较字符串中的字符,使用它们的值作为unsigned char 首先,它将一个字符串的第一个字符与另一个字符串的第一个字符进行比较。 如果它们不同,则如果第一个字符串的字符小于另一个字符串,则报告第一个字符串“小于”第二个字符串,如果第一个字符串的字符更大,则报告“大于”。 如果字符相等,则strcmp比较字符串的第二个字符,然后是第三个字符,依此类推。 (如果一个字符串比另一个字符串短,但直到它的结尾都相同,则终止它的 null 字符将导致它小于另一个字符串。)

那么,有没有办法比较两个数字字符串,而不用比较它们的实际 integer 值?

对此没有标准库例程。 你可以为它写一个例程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM