具有相同变量的函数中的函数给我错误的输出

时间:2019-01-21 14:20:37

标签: c list function file wchar

我必须编写一个使用波兰语字符的程序。问题出在函数中,函数都具有相同的一个变量(例如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等)

0 个答案:

没有答案