C语言中的重音和开音问题

时间:2018-10-31 13:19:04

标签: c

我正在研究C,现在我开始了解如何处理文件,即:如何写入,读取和删除数据。

无论我遇到什么问题,我的程序都将使用重音符号和特殊字符,因此我使用自己的语言设置了setlocation,以便它们可以正常工作。

但是最终会导致两个不一致之处:

当我将带有重音的单词保存在文件中并尝试在屏幕上显示它们时,返回几个奇怪的字符。请注意,printf中带重音的单词会正常显示。

enter image description here

当我删除setlocation时,插入文件中的重音词会完美显示,但不会显示带有重音的printf。

enter image description here

我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

int main() {

    setlocale(LC_ALL, "Portuguese");

    FILE *my_file;

    char name[90];

    fopen_s(&my_file, "names.txt", "a");

    printf("Digite uma palavra acentuada [não/ação/maldição]: ");

    scanf_s("%[^\n]", name, 90);

    fputs(name, my_file);
    fputs("\n", my_file);
    fclose(my_file);

    fopen_s(&my_file, "names.txt", "r");

    int i;
    char *result;
    char lines[100];

    i = 1;
    while (!feof(my_file))
    {
        result = fgets(lines, 100, my_file);
        if (result)
            printf("%s", lines);
        i++;
    }

    fclose(my_file);
    return 0;
}

有关如何解决此问题的任何建议?谢谢。

0 个答案:

没有答案