Когда мы используем метод fscanf_s в Visual Studio 2013 (приложение консоли C++), Os-Winsever2008 (64 бит), указатель файла считывает данные за один или два байта заранее. Например: во время чтения текстового файла вторая строка файла «Administartor», но fscanf_s() возвращает слово как «dministrator». Пожалуйста, помогите мне исправить эту проблему. код работает нормально с Windows XP 32 бит с помощью Visual Studio 2008.fscanf_s не работает должным образом в Winserver2008 VS2013 64bit
FILE* pFile;
pFile = NULL;
string strFile = "E:\\10_Products.lrf";
fopen_s(&pFile, strFile.c_str(), "r");
char szTemp[256];
string strTemp = "";
if (NULL != pFile)
{
while (!feof(pFile))
{
nRet = fscanf_s(pFile, "%s", szTemp);
if (EOF == nRet)
{
cout << "EOF detected";
}
}
return 0;
}
Формат 10_Products.lrf файла приведен ниже.
[OPERATOR_LEVEL]
Administrator
Покажите нам свой код. –
Код товара \t FILE * pFile; \t pFile = NULL; \t строка strFile = "E: \\ 10_Products.lrf"; \t fopen_s (& pFile, strFile.c_str(), "r"); \t char szTemp [256]; \t string strTemp = ""; \t, если (NULL = Pfile!) \t {\t \t \t в то время (feof (Pfile)!) \t \t { \t \t \t nRet = fscanf_s (Pfile, "% s", szTemp); \t \t \t, если (EOF == nRet) \t \t \t { \t \t \t \t соиЬ << "EOF обнаружен"; \t \t \t} \t} \t возврата 0; }} –
Вы должны отредактировать свое сообщение, а не добавлять его в качестве комментария –