不能用!feof()停止读取Unicode文件

问题描述 投票:1回答:1

我不知道为什么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\n");
    }
    c = fgetwc(f);
}
info[i] = '\0';

fclose(f);
return info;

}

读完文件中的所有字符后。似乎没有停止。甚至c与Delim相同。并且!feof(f)也没有奏效。我试过c!= WEOF但也失败了

我认为问题出在我读过的文件中但没有。我有更改另一个文件,但同样的问题。谢谢你的帮助!

c unicode feof
1个回答
2
投票

你希望循环,虽然你没有Delim字符,它不是文件的结尾,所以用||替换&&

while (!feof(f) && c != Delim)

编辑:订单也已根据评论进行了更改

© www.soinside.com 2019 - 2024. All rights reserved.