Я пытаюсь предложить пользователю ввести имя файла / путь на консоли, а затем пытаюсь открыть этот файл с помощью CreateFile (). На данный момент вызов CreateFile () работает, если я использую жестко закодированное имя файла и макрос TEXT (). Однако после его ввода пользовательским вводом вызов завершается неудачно, и GetLastError () возвращает ошибку 123 или «Неверный синтаксис имени файла, имени каталога или метки тома». Ниже приведен соответствующий код, я довольно растерялся относительно того, почему это происходит.
LPTSTR dllPath;
LPDWORD dllPathLength;
dllPath = (LPTSTR)calloc(MAX_PATH, sizeof(TCHAR));
dllPathLength = new DWORD;
if(ReadConsole(hStdIn, dllPath, MAX_PATH, dllPathLength, NULL)==0)
{
_tprintf(TEXT("ReadConsole failed with error %d\n"), GetLastError());
return 1;
}
_tprintf(TEXT("File path entered: %s\n"), dllPath);
hDll = CreateFile(dllPath, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, NULL, NULL);
if (hDll == INVALID_HANDLE_VALUE)
{
_tprintf(TEXT("CreateFile failed with error %d\n"), GetLastError());
return 1;
}
Для справки, чтобы заставить его работать с жестко заданным путем к файлу, я заменил параметр "dllPath" в вызове CreateFile () на "TEXT (" C: \ log.log ")".
Любая помощь будет высоко ценится! Заранее извиняюсь, если это явная ошибка, я все еще пытаюсь привыкнуть к программированию на языке C в стиле Windows, и никогда не был слишком хорош с обычным стилем.