WIN32 - чтение текстового файла в MyDocuments в Windows CE, возвращая пустое - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь написать простую программу для чтения текстового файла с именем «1.txt» (который содержит только «ab c») в Windows ОС CE с использованием Windows Mobile 5.0 SDK, WIN32 и C в Visual Studio 2008. Я сохранил этот текстовый файл в папке «Мои документы».

Моя программа выдает ошибку «Не удается открыть текстовый файл», что означает, что я не могу открыть файл для чтения. Я подозреваю, что я не устанавливаю правильный путь к моему файлу в соответствии с файловой структурой WinCE, но (как вы можете видеть из моего прокомментированного кода) я пробовал все виды выражений пути для Windows CE безрезультатно. Я попробовал функцию GetModuleFileName (), и она возвращает путь к файлу "Мои документы \ 1.txt". Вот мой код:

#include <winbase.h>
#include <windows.h>
#include <windowsx.h>
#include <winuser.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "resource.h"
#include "ScanCAPI.h"
#include <time.h>
#include <tchar.h>

#pragma comment(lib, "Kernel32.lib")

wchar_t text10[256];

FILE * fPtr;
.
.
    switch(uMsg)
    {

        case WM_INITDIALOG:

            fPtr = _wfopen ("My Documents\\1.txt" , "rt");
            //fPtr = _wfopen ("\\My Documents\\1.txt" , "rt");  
            //fPtr = _wfopen ("\My Documents\1.txt" , "rt");        
            //fPtr = _wfopen ("My Documents\1.txt" , "rt");
            //fPtr = _wfopen ("My Device\1.txt" , "rt");
               if (fPtr != NULL)
               {
                 if ( fgetws (text10 , 100 , fPtr) != NULL )
                   wprintf("%s",fgetws(text10,255,fPtr));
                   //fwscanf(fPtr,"%s", &text10);
                   //fgetws (text10 , 255 , fPtr);                 
                   //fputws ( text10, stdout );
                   //fwscanf(fPtr,"%s", &text10);
                 MessageBox(0, text10, TEXT("text10"), MB_OK); //returning blank message box
               } else {
                 MessageBox(0, TEXT("Cannot read file."), TEXT("File Read Error"), MB_OK);
               }


            if(fPtr == NULL)
            {
                //Open File failure
                fclose(fPtr);
                MessageBox(0, TEXT("Cannot open text file."), TEXT("File Open Error"), MB_OK);
                PostQuitMessage(0);
            }

.
.

Вот содержимое моего заголовочного файла Resource.h:

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
//
#define IDD_DIALOG_SSCAN                101
#define IDI_ICON1                       102
#define IDC_STATIC1                     995
#define IDC_EDIT1                       1010
#define IDC_BUTTON1                     1012

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        105
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1014
#define _APS_NEXT_SYMED_VALUE           106
#endif
#endif

Как открыть текстовый файл «Мои документы \ 1.txt» для чтения?

Ответы [ 2 ]

1 голос
/ 17 марта 2020

Либо fPtr = _wfopen(L"path_to\\1.txt", L"rt");

или fPtr = fopen("path_to\\1.txt", "rt"); работает для меня на Windows 10.

Попробуйте fopen вместо _wfopen, который является широкоформатной версией fopen.

1 голос
/ 16 марта 2020

Похоже, SHGetSpecialFolderPath действительно доступен на Windows CE.

Вызовите его, чтобы получить полный путь к папке «Мои документы».

...