Функция в функции с теми же переменными дает мне неправильный вывод - PullRequest
0 голосов
/ 21 января 2019

Я должен написать программу, которая использует символы польского языка.Проблема с функцией в функции, у обеих одинаковая переменная (например, a(int smth) b(int smth), smth - та же, что была использована в обоих)

У меня есть open_dyk функция вглавный.В файле есть текст, что-то с символами pl, такими как grzegżółka в первой строке, но не имеет значения, сколько раз я запускаю программу, это дает мне огромный символ A и случайный удвоенный символ, например, yy 22 и т. Д.

struct dyk{
    wchar_t line[200];
    struct dyk *next;
};
    typedef struct dyk dyk;

    dyk* add_to_bottom(wchar_t *buf, dyk *head)
    {
        dyk *current_node = head;
        dyk *new_node;

        while(current_node != NULL && current_node->next != NULL){
            current_node = current_node->next;
        }

        new_node = (dyk*)malloc(sizeof(dyk));
        wcscpy(buf, new_node->line);
        new_node->next = NULL;

        if (current_node != NULL) {
            current_node->next = new_node;
        } else {
            head = new_node;
        }

        return head;
    }

    void print_all(dyk *head) 
    {
        dyk *current_node = head;

        while ( current_node != NULL) {
            wprintf(L"%s ", current_node->line);
            current_node = current_node->next;
        }
    }

    void open_dyk(char name[100], dyk *head) 
    {
        wchar_t buforek[100];
        FILE *dyktando;
        dyktando = fopen(name, "r+");

        if(dyktando == NULL){
            wprintf(L"Błąd otwarcia pliku!\n");
        }else{
            while(!EOF){
                add_to_bottom(buforek, head);
            }
            print_all(head);
        }
        fclose(dyktando);
    }

основная функция состоит из:

system("chcp 852");
setlocale(LC_ALL, ".852");

dyk *show;
show = (dyk*)malloc(sizeof(dyk));
open_dyk("farm.txt", show);

Как я уже говорил ранее, ожидаемый результат должен выглядеть следующим образом:

grzegżółka?
ź ż

Фактические результаты выглядят так:

A11

(или другие варианты, такие как AYY, Abb и т. Д.)

...