我有一个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文件,其中以西班牙语列出了国家/地区的名称。这意味着例如有“”和“”字符。我有一个小函数,可以用来计算...
文件,如保留在dis上,请不要使用“ wchars”,它会以“编码”(通常是utf-8或latin-1)进行编码。