Я должен написать программу, которая использует символы польского языка.Проблема с функцией в функции, у обеих одинаковая переменная (например, 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 и т. Д.)