从char数组复制字符到char数组
我有一个大小为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"
。
任何人都可以帮助我吗?
改用memcpy
函数。
memcpy(sessionID, ticket, sizeof(sessionID) );
考虑到sessionID won; t包含一个字符串。它将包含“原始”字符。
至于功能strcpy
那么它被设计为复制字符串是一个由零结尾的字符序列。 因此,如果您的代码片段在数值为'\ 0'的字符前提供了ticket
中的字符,并且该字符存在于ticket
中,则它将复制尽可能多的字符。
当我使用像你说的memcpy时,被调用函数中的sid获取值“593378e02614ebf8468cb67ca319bedaðúÙ,ûÙ@ wÞUVSþÿÿÿ”úÙ
@BillAdonopoulos:因为它不是null终止 –
@BillAdonopoulos什么是无用的东西?你说你需要复制32个字符。那么无用的东西从哪里来? –
您可以使用strncpy,它允许您指定要复制的字节数。
看起来像零终止字符串和非零终止字符串的错误混合 –
您最好先决定是使用C还是C++编程。 – usr2564301