要保持原字符串的完整,可以使用 strchr 和 sscanf 的组合等。
/* Find token in string
* Accepts: source pointer or NIL to use previous source
* vector of token delimiters pointer
* Returns: pointer to next token
*/
static char *ts = NIL; /* string to locate tokens */
char *strtok (char *s,char *ct)
{
char *t;
if (!s) s = ts; /* use previous token if none specified */
if (!(s && *s)) return NIL; /* no tokens */
/* find any leading delimiters */
do for (t = ct, ts = NIL; *t; t++) if (*t == *s) {
if (*(ts = ++s)) break; /* yes, restart seach if more in string */
return ts = NIL; /* else no more tokens */
} while (ts); /* continue until no more leading delimiters */
/* can we find a new delimiter? */
for (ts = s; *ts; ts++) for (t = ct; *t; t++) if (*t == *ts) {
*ts++ = '\0'; /* yes, tie off token at that point */
return s; /* return our token */
}
ts = NIL; /* no more tokens */
return s; /* return final token */
}
6、char *strncpy(char* strDest,const char* strSour,size_t count);
这个函数的意思是:
拷贝一个字符串到另外一个字符串,strDest 是目标字符串地址,strSour 是源字符串地址,size_t
是要拷贝的字符个数,当要拷贝的字符个数(size_t count)小于或等于 strSour 长度,strDest 的最后
不会加\0,当要拷贝的字符个数(size_t count)大于 strSour 长度,strDest 最后会自动追加一个\0,
char * __cdecl strncpy (char * dest,const char * source,size_t count)
{
char *start = dest;
while (count && (*dest++ = *source++)) /* copy string */
count--;
if (count) /* pad out with zeroes */
while (--count)
*dest++ = '\0';
return(start);
}