代码: 全选
pstr_end = pstr + strlen(pstr) - 1;
pstr_work = pstr;
debug("pstr_work=0x%lx, pstr_end=0x%lx \n", pstr_work, pstr_end);
这与我的原意相悖,我开始是认为 pstr_end > pstr_work, 所以请教大家造成这样结果的原因是什么?
代码: 全选
pstr_end = pstr + strlen(pstr) - 1;
pstr_work = pstr;
debug("pstr_work=0x%lx, pstr_end=0x%lx \n", pstr_work, pstr_end);
代码: 全选
void standString(){
char* pstr = "hello";
char* pstr_end;
char* pstr_work;
pstr_end = pstr + strlen(pstr) - 1;
pstr_work = pstr;
printf("pstr_work=0x%lx, pstr_end=0x%lx \n", pstr_work, pstr_end);
}
代码: 全选
pstr_work=0x100403030, pstr_end=0x100403034
代码: 全选
BOOL str_toupper(char *pstr)
{
char *pstr_work = NULL, pstr_end = NULL;
if(!pstr)
{
error("char pointer is null!\n");
return FALSE;
}
pstr_end = pstr + strlen(pstr) - 1;
pstr_work = pstr;
debug("pstr_work=0x%lx, pstr_end=0x%lx \n", pstr_work, pstr_end);
while(pstr_work <= pstr_end)
//int len = strlen(pstr);
//while(len-- > 0)
{
*pstr_work = toupper(*pstr_work);
pstr_work++;
}
debug("pstr=%s\n", pstr);
return TRUE;
}
代码: 全选
[str_toupper]:35: pstr_work=0x6a4324, pstr_end=0x26
[str_toupper]:43: pstr=yes