这个是16位Windows上的一个api函数(准确地说是一个宏定义),现在早就过时了。后来Win32出现的时候,微软为了兼容,封装就是通过CharNext来实现的。(AnsiNext只能处理ansi字符串;而CharNext可以ansi,也可以unicode字符串) 该函数的就是返回ansi字符串中的下一个位置(指针)。如果你要研究一下历史,下面的代码是微软MSDN上给出的例子: int StrCpyN(LPSTR lpszDst, LPSTR lpszSrc, unsigned int wLen) { LPSTR lpEnd; char cTemp; // account for the terminating NULL --wLen; for (lpEnd = lpszSrc; *lpEnd && (lpEnd - lpszSrc) wLen; lpEnd = AnsiNext(lpEnd)) ; // scan to the end of string, or wLen bytes // The following can happen only if lpszSrc[wLen-1] is a lead // byte, in which case do not include the previous DBC in the copy. if (lpEnd - lpszSrc wLen) lpEnd -= 2; // Terminate the source string and call lstrcpy. cTemp = *lpEnd; *lpEnd = '\0'; lstrcpy(lpszDst, lpszSrc); *lpEnd = cTemp; }