要求:对任一数字字符串由第一位向后的比较。
错误代码:
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;
}
}
}