我使用以下方法来比较同一文件的两个版本。
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&gt; 21
答案 0 :(得分:4)
01.020.21 <- str
01.000.46 <- cur
^
发现字符串之间的第一个不匹配(如果存在)并报告哪个字符串在不匹配时具有更大的值。
在你的情况下,第一个不匹配就在这里
2>0
显然cur
表示str
在词典顺序中出现strcmp(cur, str)
,因此函数调用int strcmp( const char *lhs, const char *rhs );
应返回负数。
.v-grid-cell { font-size: 13px; height: 18px; vertical-align: middle; } .v-grid-row{ height: 18px; } .v-grid-row-odd { height: 18px; background-color: #EFF0F1; }
返回值
如果lhs以字典顺序出现在rhs之前,则为负值。 如果lhs和rhs相等则为零。 如果按字典顺序在rhs之后出现lhs,则为正值。