无法停止使用 !feof() 读取 Unicode 文件
Can't stop reading Unicode file with !feof()
我不知道为什么while循环不能停止。它无法将 c 与 Delim 进行比较,也不会到达 eof 就停止。
wchar_t* Getline(const wchar_t* Filename, const wchar_t Delim){
FILE* f = _wfopen(Filename, L"r, ccs=UTF-8");
wchar_t* info = NULL;
wchar_t* temp = NULL;
int count = 1;
int i = 0;
wchar_t c;
c = fgetwc(f);
while (c != Delim || !feof(f))
{
count++;
temp = (wchar_t*)realloc(info, count * sizeof(wchar_t));
if (temp)
{
info = temp;
info[i] = c;
i++;
}
else
{
free(info);
wprintf(L"Failed to read\n");
}
c = fgetwc(f);
}
info[i] = '[=10=]';
fclose(f);
return info;
}
读取文件中的所有字符后。好像停不下来。甚至 c 都与 Delim 相同。而且 !feof(f) 也没有用。我试过 c != WEOF 但也失败了
我以为问题出在我阅读的文件中,但没有。我已经更改了另一个文件但同样的问题。
谢谢你帮助我!
你希望在没有 Delim 字符的情况下循环 并且 它不是文件的末尾,所以将 ||
替换为 &&
while (!feof(f) && c != Delim)
编辑:订单也已根据评论更改
我不知道为什么while循环不能停止。它无法将 c 与 Delim 进行比较,也不会到达 eof 就停止。
wchar_t* Getline(const wchar_t* Filename, const wchar_t Delim){
FILE* f = _wfopen(Filename, L"r, ccs=UTF-8");
wchar_t* info = NULL;
wchar_t* temp = NULL;
int count = 1;
int i = 0;
wchar_t c;
c = fgetwc(f);
while (c != Delim || !feof(f))
{
count++;
temp = (wchar_t*)realloc(info, count * sizeof(wchar_t));
if (temp)
{
info = temp;
info[i] = c;
i++;
}
else
{
free(info);
wprintf(L"Failed to read\n");
}
c = fgetwc(f);
}
info[i] = '[=10=]';
fclose(f);
return info;
}
读取文件中的所有字符后。好像停不下来。甚至 c 都与 Delim 相同。而且 !feof(f) 也没有用。我试过 c != WEOF 但也失败了
我以为问题出在我阅读的文件中,但没有。我已经更改了另一个文件但同样的问题。 谢谢你帮助我!
你希望在没有 Delim 字符的情况下循环 并且 它不是文件的末尾,所以将 ||
替换为 &&
while (!feof(f) && c != Delim)
编辑:订单也已根据评论更改