请帮我看下这段代码的问题?
char* buf = (char*)LocalAlloc(LPTR, 8);//::ZeroMemory(buf, 8);/*遍历字符串进行转码*/while( *pWork != 0x0 ){::ZeroMemory(buf, 8);if ( *pWork != '!' && *pWork != '@' && *pWork != '#' &&*pWork != '$' && *pWork != '&' && *pWork != '*' &&*pWork != '(' && *pWork != ')' && *pWork != '=' &&*pWork != ':' && *pWork != '/' && *pWork != ';' &&*pWork != '?' && *pWork != '+' && *pWork != '\'' &&*pWork != '.' ){sprintf_s(buf, d_size, "%%%2x", *pWork);//strcat_s(des, d_size, buf);}else{sprintf_s(buf, d_size,"%c", *pWork);}strcat_s(des, d_size, buf);pWork++;}LocalFree(buf);//问题出在这里