Je voudrais utiliser l'appel GetVolumeInformation pour récupérer le nom d'un périphérique amovible. Je peux récupérer le nom et stocker dans une variable de tableau TCHAR szVolNameBuff. Voici mon code pour que:Array stocke le nom récupéré de GetVolumeInformation étrangement dans Visual C++?
// Get Volume Information to check for NTFS or FAT
TCHAR szFileSys[256];
TCHAR szVolNameBuff[256];
DWORD dwSerial = 0;
DWORD dwMFL = 0;
DWORD dwSysFlags = 0;
bool bSuccess;
char fileType[255];
int bSuccessdebug = 0;
//LPCTSTR temp = _T("E:\\"); For debugging only
bSuccess = GetVolumeInformation(drivePath,
szVolNameBuff,
sizeof(szVolNameBuff),
&dwSerial,
&dwMFL,
&dwSysFlags,
szFileSys,
sizeof(szFileSys));
Quand je tente d'imprimer le contenu de la variable avec la ligne:
printf("szVolNameBuff holds: %s \n", &szVolNameBuff);
je reçois une sortie de « T » au lieu du nom « Transcend » qui est le nom du lecteur. J'ai débogué avec Visual Studio 2008 et découvert que le tableau TCHAR stocke le nom comme: [0] 'T' [1] 0 [2] 'R' [3] 0 [4] 'A' [5] 0 [6] 'N' [7] 0
et ainsi de suite. Pourquoi donc? Je veux la matrice pour stocker le mot juste:
[0] 'T' [1] 'R' [2] 'A' [3] 'N' [4] 'S'
pour l'utiliser plus tard pour la concaténation de chaînes. Y'a t'il un moyen d'arranger cela?
Vérifiez les paramètres du projet pour le jeu de caractères/caractères –
Merci pour le conseil printf! Cependant, je veux toujours essayer de résoudre la situation de tableau afin que je puisse concaténer des chaînes plus tard. Lorsque j'essaie de concaténer des chaînes en utilisant lstrcat en ce moment, j'obtiens toujours l'erreur. Existe-t-il un moyen de concaténer des chaînes afin que je puisse obtenir une sortie de (par exemple) "Exemple-Transcend" plutôt que "Exemple-T"? – ffrstar777
Vous pourriez avoir plus de chance en utilisant _tstrcat et toutes les fonctions _tXXX connexes.De cette façon, vous savez que vous utilisez le bon ensemble de fonctions et ne pas mélanger Unicode et ANSI. – mdma