제가 작업중인 C 프로젝트가 있는데 문제가 있습니다. 프로그램은 .php 페이지에 의해 반향되는 문자열을 읽습니다. 당신이 데이터를 수신하는 명령() 함수로 전송됩니다 볼 수 있듯이LPBYTE를 char * 또는 C (중국어 출력)로 변환하는 작업에 어려움이 있습니다.
LPSTR szBuffer=(LPSTR)chunk+0x1000;
DWORD dwRead;
if (CWA(_HttpSendRequestA, wininet, hHttpRequest, szHeaders, lpstrlenA(szHeaders), szReq, lpstrlenA(szReq)) != 0)
{
CWA(_InternetReadFileA, wininet, hHttpRequest, szBuffer, 0x400, &dwRead);
if (dwRead)
Commands((LPBYTE)szBuffer, dwRead);
}
: 그것은 데이터를 읽고() 명령으로 전송받을 변수로 기능을 임명이 코드 를 사용 LPBYTE szBuffer (함수의 "command") 및 DWORD dwRead (함수의 "size").
Commands() 함수에서 .php 페이지에서 읽은 문자열을 읽어야합니다. 그러나 데이터가 LPBYTE로 저장되어있는 것처럼 보이기 때문에 char *로 변환하려고하는 많은 작업을 수행했습니다. 그러나 내가 마침내 그것을 얻었다고 생각했을 때 MessageBox를 사용하여 출력하려고했습니다 (읽어야하는 문자열이 표시되는지 확인하기 위해). 원래 문자열이 있어야한다하면서 그러나, 이것은 (나 한자를 반환
"TASKci = 0C73CCFD206BBD011E7087CE0806E6F6E69630, 작업 = dlex, TI = AD62A5950B76F3812C542C24040EACE9, 홍보 = https를 통해 UR = // test.com/test.txt,cl = "
그것은 나 반환 무엇의 스크린 샷 :. http://prntscr.com/h0p5iw
명령의 내부 코드() 보이는 방법 :
BOOL Commands(LPBYTE command, DWORD size) {
LPTSTR x = (LPTSTR)((char*)command);
{
int msgboxID = MessageBox(
NULL,
x,
(LPCWSTR)L"Woop",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2);
}
CWA(Sleep, kernel32, 100);
return 1; }
내가 난 단지 C#으로 물건을 서면으로 작성했습니다 (C에 새로 온 사람을 전에) 그래서 나는 바보 같은 질문을하면 미안해. , 정말 최선을 다했는데 혼자서 어떤 해결책을 찾지 못하는 것 같습니다.
또한, Commands()
기능 내의 내용을 제외한 모든 항목은 저에게 코딩 된 것이 아니라 더 많은 경험이있는 사람에 의해 코딩되었음을 명심하십시오. 이 코드는 잘되어야하며 페이지에서 데이터를 읽는 것이 확실합니다. 어쩌면 변환 어딘가에있는 것일 수도 있습니다.
'LPSTR szBuffer = (LPSTR) 청크 + 0x1000'이란 무엇입니까? 'char szBuffer [0x1000] = {0}'을 의미합니까? 이 'CWA'기능은 무엇입니까? 귀하의 프로젝트가 유니 코드 인 것 같지만 ANSI 기능을 강요합니다. '(LPTSTR)'캐스트를 사용하여 오류를 숨기고 있습니다. WinAPI 함수 (예 :'HttpSendRequest')를 사용해야합니다. 또는'HttpSendRequestA' 그리고 당신이 ANSI를 원한다면. 귀하의 코드에는 많은 매크로, 형변환 및 자유로운 코드가 포함되어 있습니다. 'LPTSTR'과 다른'T' 매크로는 초보자들에게는 매우 혼란 스러울 수 있으므로 피하십시오. –
그들이 선택한 문자 인코딩에 대해 더 많은 경험이있는 사람에게 물어보십시오. 'MultiByteToWideChar'를 사용하여 와이드 캐릭터 라인으로 변환하려면 알 필요가 있습니다. [모든 소프트웨어 개발자가 절대적으로 최소로 절대적으로, 절대적으로 유니 코드와 문자 집합에 대해 알 필요가 있습니다! (변명의 여지가 없습니다!)] (https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum- 모든 소프트웨어 개발자 - 절대적으로 - 반드시 - 반드시 - 알아야 할 - 유니 코드 및 문자 세트 - 변명의 여지가 없음). – IInspectable
유형 불일치 오류에 대한 현재의 접근 방식은 A가 B 유형이 아닌 경우에도 A를 B로 변환하여 컴파일러에게 거짓말하는 것 같습니다. 컴파일러 오류를 이해하려고 시도해야합니다. 그들을 무시하지 마라. –