2016-12-21 4 views
-4

문제가 있습니다.이 중 하나라도 고칠 수 있다면 고맙겠습니다. 나는 1 시간이 작품을거야 내 메시지를 보내고 문자의 텍스트와 두 번째 시간을 표시 할 때거야입니다 : 내가strlen에 대한 도움이 필요하십니까

는 문제 내 게임에있는 사람에게 보낼 메시지를 암호화하기 위해 노력하고

암호화 된 텍스트를 표시하고 나는 사람들이

("ZFDKWEK,CSJ,$MS(,,,)")

if (MessageEnc) 
        { 
        if (GET_GAME_TIMER() >= destroy_tick2){ 
         destroy_tick2 = GET_GAME_TIMER() + 82000; 
         int i = 0; 
         for (i = 0;i<18;i++) 
         { 
         if (i == PlayerId()) continue; 
         int Handle = GetPlayerHandle(i); 
         if(!DoesEntityExist(Handle)) continue; 
         char key = 'j'; //Key 
         char *encMess = "ZFDKWEK,CSJ,$MS(,,,)"; 

         for (int i = 0; i < strlen(encMess); i++) 
         { 
          encMess[i] ^= key; 
         } 
         char buf[64]; 
        snprintf(buf, sizeof(buf), "~r~%s", encMess); 
        NETWORK::NETWORK_HANDLE_FROM_PLAYER(i, &networkHandle, 13); 
        NETWORK::NETWORK_SEND_TEXT_MESSAGE(buf, &networkHandle);  
        printf(encMess);       
        } 
        } 
        } 
+1

에 오신 것을 환영합니다 스택 오버플로합니다. [둘러보기]를 읽고 [질문]을 읽고 [mcve]를 만드는 방법을 읽어보십시오. 텍스트를 올릴 수있을 때 사진을 게시하지 마십시오. "도움이 필요합니다.", "나는 약간의 문제가 있습니다. 당신이 고칠 수 있다면 고맙겠습니다.", "오늘 모두 안녕하세요. "절대로 이렇게하지 마십시오."제가 고칠 수 있다면 제가 페이팔을 통해 기부 할 것입니다. :) ". 감사. – Stargateur

+0

그래서 다른 모든 인쇄를 건너 뜁니다. –

+1

답변을받은 후 질문을 파기하지 마십시오. 그것은 절대적으로 SO에 정통하지 않습니다. –

답변

3

귀하의 XOR 연산 후 모든 홀수 반복하고 12월에 리터럴 정적 문자열을 암호화하는 것을 볼 수 싶지 않아 그것을 계속 반복 해 나간다. 문자열 리터럴을 수정하지 않으려면 tmp 버퍼를 사용하십시오. 규칙을 기억하지는 않지만 문자열 리터럴의 메모리 내용을 수정하려고 시도하면 정의되지 않은 동작 영토가 입력된다고 생각합니다. 그래서 이런 종류의 코딩을 피하는 것이 가장 좋습니다.

변경이 코드 세트 : 여기에

char *encMess = ",Z8J'Z$/3J.8Z:J&Z((3J-ZJ9?(9)8#(/J>ZJ'3J3Z?>?(/PJ9!3+)8Z"; 

for (int i = 0; i < strlen(encMess); i++) 
{ 
    encMess[i] ^= key; 
} 

char buf[64]; 
snprintf(buf, sizeof(buf), "~r~%s", encMess); 

:

char tmp[64]; 
const char *encMess = ",Z8J'Z$/3J.8Z:J&Z((3J-ZJ9?(9)8#(/J>ZJ'3J3Z?>?(/PJ9!3+)8Z"; 

strcpy(tmp, encMess, 64); 
size_t len = strlen(encMess); 

for (int i = 0; i < len; i++) 
{ 
    tmp[i] ^= key; 
} 

char buf[64]; 
snprintf(buf, sizeof(buf), "~r~%s", tmp);