strcmp 用法错误?
strcmp wrong usage?
我正在使用以下方法来比较同一文件的两个版本。
fprintf(stdout, "ref_ptr %s\n", str);
fprintf(stdout, "cur_ptr %s\n", cur);
if (strcmp(cur, str) < 0)
{
fprintf(stderr,"Error: bad version!\n");
return -1;
}
输出:
ref_ptr
01.100
01.020.21
cur_ptr
01.100
01.000.46
Error: bad version!
在此特定情况下,cur 不大于 str,为什么?
在
时工作正常
ref_ptr
01.100
01.000.42
但是,在第一种情况下,我会考虑 46 > 21
strcmp
找到字符串之间的第一个不匹配项(如果存在)并报告哪个字符串在不匹配点具有更大的值。
在你的情况下,第一个不匹配出现在这里
01.020.21 <- str
01.000.46 <- cur
^
很明显 2>0
这意味着 cur
在字典顺序中出现在 str
之前所以函数调用 strcmp(cur, str)
应该 return 负数。
int strcmp( const char *lhs, const char *rhs );
Return value
Negative value if lhs appears before rhs in lexicographical order.
Zero if lhs and rhs compare equal.
Positive value if lhs appears after rhs in lexicographical order.
我正在使用以下方法来比较同一文件的两个版本。
fprintf(stdout, "ref_ptr %s\n", str);
fprintf(stdout, "cur_ptr %s\n", cur);
if (strcmp(cur, str) < 0)
{
fprintf(stderr,"Error: bad version!\n");
return -1;
}
输出:
ref_ptr
01.100
01.020.21
cur_ptr
01.100
01.000.46
Error: bad version!
在此特定情况下,cur 不大于 str,为什么?
在
时工作正常ref_ptr
01.100
01.000.42
但是,在第一种情况下,我会考虑 46 > 21
strcmp
找到字符串之间的第一个不匹配项(如果存在)并报告哪个字符串在不匹配点具有更大的值。
在你的情况下,第一个不匹配出现在这里
01.020.21 <- str
01.000.46 <- cur
^
很明显 2>0
这意味着 cur
在字典顺序中出现在 str
之前所以函数调用 strcmp(cur, str)
应该 return 负数。
int strcmp( const char *lhs, const char *rhs );
Return value
Negative value if lhs appears before rhs in lexicographical order. Zero if lhs and rhs compare equal. Positive value if lhs appears after rhs in lexicographical order.