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