我有一个大小为128的char数组。我想将前32个复制到另一个char数组。我正是这样做的:
char ticket[128];
data.readBytes(ticketLength, (BYTE*)ticket);
char sessionID[32];
strcpy(sessionID, ticket);
int userID = bdAuthService::checkLogin(sessionID);
" ticket"的内容是"11aa14462ac96a9b389686672b99fa9e1IvtooKO6eVxVHO6URIQld8jFaceTaker"
,当我试图将sessionID传递给checkLogin函数时,它获得与票证"11aa14462ac96a9b389686672b99fa9e1IvtooKO6eVxVHO6URIQld8jFaceTaker"
相同的内容。
有人可以帮我吗?
答案 0 :(得分:4)
改为使用memcpy
功能。
memcpy( sessionID, ticket, sizeof( sessionID ) );
考虑到sessionID赢了; t包含一个字符串。它将包含" raw"字符。
对于函数strcpy
,它被设计为复制字符串,这些字符串是以零结尾的字符序列。
因此,对于您的代码片段,它会复制尽可能多的字符,因为ticket
中的字符在具有值' \ 0'的字符之前。只要ticket
中存在这样的字符。
答案 1 :(得分:0)
您可以使用strncpy来指定要复制的字节数。