c++中数字字符串的比较

要求:对任一数字字符串由第一位向后的比较。

错误代码:

int charcompare(const char *pchar1, const char * pchar2) {
while (*pchar1==*pchar2) {
pchar1++;                                       
pchar2++;
}
if ('\0'==*pchar1&&'\0'!=*pchar2) {
return -1;
}
else if ('\0' != *pchar1&&'\0' == *pchar2) {
return 1;
}
else if ('\0' == *pchar1&&'\0' == *pchar2) {
return 0;
}
else {
if (pchar1[0] > pchar2[0]) {
return 1;
}
else {
return -1;
}
}

}

错误情况:不能比较相等数字符。

错误原因:while循环把*pchar1与*pchar2做比较,假设两字符串相等,则同时到'\0',仍相等而继续运行下去,会在内存出发生预料不到的错误。(目前不了解);

修改代码:int charcompare(const char *pchar1, const char * pchar2) {
while ('\0'!=pchar1&&'\0'!=*pchar2) {
pchar1++;                                      
pchar2++;
}
if ('\0'==*pchar1&&'\0'!=*pchar2) {
return -1;
}
else if ('\0' != *pchar1&&'\0' == *pchar2) {
return 1;
}
else if ('\0' == *pchar1&&'\0' == *pchar2) {
return 0;
}
else {
if (pchar1[0] > pchar2[0]) {
return 1;
}
else {
return -1;
}
}
}

猜你喜欢

转载自blog.csdn.net/Victor145/article/details/79883524