prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 13.2

为什么strncpy并不总是在目标字符串中放置一个'\0'终止符?


strncpy最初是为了处理一种现已过时的 C 语言数据结构而设计的,即定长、不一定\0-终止的“字符串”。[脚注]strncpy在其他上下文中,使用起来确实有点麻烦,因为你经常必须手动'\0'向目标字符串添加一个

你可以通过改用strncat来解决这个问题,而不是strncpy。如果目标字符串最初是空的(即,如果你先执行*dest = '\0'),strncat将实现你可能想要strncpy实现的功能

	*dest = '\0';
	strncat(dest, source, n);
此代码复制最多n个字符,并始终附加一个\0.

另一种可能性是

sprintf(dest, "%.*s", n, source)
(尽管严格来说,这仅保证在n <= 509).

复制任意字节(而不是字符串)时,memcpy通常是比strncpy.


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管