不能用!feof()停止读取Unicode文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不能用!feof()停止读取Unicode文件相关的知识,希望对你有一定的参考价值。
我不知道为什么while循环不能停止。它无法与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
");
}
c = fgetwc(f);
}
info[i] = ' ';
fclose(f);
return info;
}
读完文件中的所有字符后。似乎没有停止。甚至c与Delim相同。并且!feof(f)也没有奏效。我试过c!= WEOF但也失败了
我认为问题出在我读过的文件中但没有。我有更改另一个文件,但同样的问题。谢谢你的帮助!
答案
你希望循环,虽然你没有Delim字符,它不是文件的结尾,所以用||
替换&&
while (!feof(f) && c != Delim)
编辑:订单也已根据评论进行了更改
以上是关于不能用!feof()停止读取Unicode文件的主要内容,如果未能解决你的问题,请参考以下文章
C 语言文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )