2015-11-04 201 views
0

我有一个大小为128的char数组。我想将第一个32复制到另一个char数组中。这是如何我试图做到这一点:从char数组复制字符到char数组

char ticket[128]; 
data.readBytes(ticketLength, (BYTE*)ticket); 
char sessionID[32]; 
strcpy(sessionID, ticket); 

int userID = bdAuthService::checkLogin(sessionID); 

的“入场券”的内容是"11aa14462ac96a9b389686672b99fa9e1IvtooKO6eVxVHO6URIQld8jFaceTaker",当我想的SessionID传递给checkLogin功能,它得到了相同的内容票"11aa14462ac96a9b389686672b99fa9e1IvtooKO6eVxVHO6URIQld8jFaceTaker"

任何人都可以帮助我吗?

+0

看起来像零终止字符串和非零终止字符串的错误混合 –

+0

您最好先决定是使用C还是C++编程。 – usr2564301

回答

4

改用memcpy函数。

memcpy(sessionID, ticket, sizeof(sessionID) ); 

考虑到sessionID won; t包含一个字符串。它将包含“原始”字符。

至于功能strcpy那么它被设计为复制字符串是一个由零结尾的字符序列。 因此,如果您的代码片段在数值为'\ 0'的字符前提供了ticket中的字符,并且该字符存在于ticket中,则它将复制尽可能多的字符。

+0

当我使用像你说的memcpy时,被调用函数中的sid获取值“593378e02614ebf8468cb67ca319bedaðúÙ,ûÙ@ wÞUVSþÿÿÿ”úÙ<“所以它得到我想要的字节,但添加无用的东西.. –

+0

@BillAdonopoulos:因为它不是null终止 –

+0

@BillAdonopoulos什么是无用的东西?你说你需要复制32个字符。那么无用的东西从哪里来? –

0

您可以使用strncpy,它允许您指定要复制的字节数。