Ciao stavo provando a scrivere un programma che mostra il contenuto di un file in esadecimale e in caratteri
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hFile;
LPCWSTR fName = (LPCWSTR)argv[1];
BYTE buff[16];
DWORD dwBytesRead;
_tprintf(L"Reading Content of %s:\r\n\r\n",fName);
hFile = CreateFile(fName,GENERIC_READ,0,NULL,OPEN_EXISTING ,NULL,NULL);
if(INVALID_HANDLE_VALUE == hFile)ExitProcess(0);
while(ReadFile(hFile,buff,sizeof(buff),&dwBytesRea d,NULL) && dwBytesRead > 0)
{
for(int i=0;i<16;i++)
{
buff[i] == 0x00 ? _tprintf(L"00 ") :_tprintf(L"%x ",buff[i]);
}
_tprintf(L" ");
for(int i=0;i<16;i++)
{
buff[i] >= 0x21 || buff[i] < 0x7F ? _tprintf(L"%c ",(char)buff[i]) : _tprintf(L". ");
}
_tprintf(L"\n");
}
CloseHandle(hFile);
return 0;
}
Il problema è che l'espressione buff[i] >= 0x21 || buff[i] < 0x7F ? _tprintf(L"%c ",(char)buff[i]) : _tprintf(L". "); stampa lo stesso caratteri strani invece di quelli compresi tra 33 e 126 col risultato che la console bippa etc mi sapreste spiegare come mai??
Grazie!