如何读取带特殊字符的文件? -C

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

我有一个country.txt文件,其中以西班牙语列出了国家/地区的名称。这意味着例如有“”和“”字符。

我有一个小功能,我用来计算文档中的行数,它最初是用fgets()函数制作的,我对其进行了编辑,因此它使用了fgetws(),因为我知道应该在[ C0]变量。

wchar_t

1]如果函数找到包含“”的字符串,程序将崩溃。2)如果未找到任何特殊字符,则如果有至少一个特殊字符(如“ñ”),则valgrind会发现更多的内存泄漏,而不仅仅是1。

这是主要的:

  int linesCount = 0;
    wchar_t line[MAX_SIZE];

    while(fgetws(line, sizeof(line), f) != NULL){
        linesCount++;
    }
    rewind(f);

    return linesCount;
}

这是country.txt的第一部分:

int main (void)
{
 setlocale(LC_ALL, "spanish");
 countries = fopen("countries.txt", "r");
 int counCount = count_lines(countries);
 fclose(countries);
}

程序到达带有“á”字母的“Antártida”时崩溃。

我附上错误valgrind显示:

Aruba
Angola
Albania
Andorra
Argelia
Armenia
Austria
Alemania
Antártida
Argentina

我有一个country.txt文件,其中以西班牙语列出了国家/地区的名称。这意味着例如有“”和“”字符。我有一个小函数,可以用来计算...

c unicode special-characters
1个回答
0
投票

文件,如保留在dis上,请不要使用“ wchars”,它会以“编码”(通常是utf-8或latin-1)进行编码。

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