[問題] Linked List存字元反轉後出現亂碼
我想用Linked lisk 做檔案內容的反轉
程式碼如下:
#include<stdio.h>
#include<stdlib.h>
struct node
{
char chin;
struct node *next;
};
typedef struct node list;
typedef list *link;
int main ()
{
FILE *fptr;
link head=NULL,ptr=NULL,newptr=NULL;
char ch;
fptr=fopen("read.txt","r");
if(fptr!=NULL)
{
while((ch=fgetc(fptr))!=EOF)
{
newptr=(link)malloc(sizeof(link));
newptr->chin=ch;
newptr->next=NULL;
if(head==NULL)
{ head=ptr=newptr; }
else
{
ptr->next=newptr;
ptr=newptr;
}
}
fclose(fptr);
ptr=head;
while(ptr!=NULL)
{
printf("%c",ptr->chin);
ptr=ptr->next;
}
}
else
{printf("Fail to open file!\n");}
printf("\n");
printf("=============================================\n");
//反轉
link inverse=NULL,newhead=NULL;
ptr=head;
while(ptr!=NULL) //這裡是做一個"新的節點為新的head_node"Linked list
{
inverse=(link)malloc(sizeof(link));//
inverse->chin=ptr->chin;//
inverse->next=newhead;//
newhead=inverse;//
ptr=ptr->next;
}
//!!!!問題在這裡開始!!!!!!!!在上面這個while依序存入字元都還OK
//但是從這裡開始,下面的while印初我存進去的字元資料時
//如果read.txt裡面是英文、數字、符號都可以正常的反轉
//但是如果內容是"中文",就會變成亂碼耶!!!!!!為什麼啊?
ptr=newhead;
while(ptr!=NULL)
{
printf("%c",ptr->chin);
ptr=ptr->next;
}
printf("\n");
system("pause");
return 0;
}
問題在程式碼中間得註解,請問有人碰到相同問題嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.235.48
推
06/04 12:45, , 1F
06/04 12:45, 1F
→
06/04 12:46, , 2F
06/04 12:46, 2F
→
06/04 12:47, , 3F
06/04 12:47, 3F
→
06/04 12:48, , 4F
06/04 12:48, 4F
→
06/04 12:49, , 5F
06/04 12:49, 5F
→
06/04 12:50, , 6F
06/04 12:50, 6F
→
06/04 13:07, , 7F
06/04 13:07, 7F
→
06/04 13:08, , 8F
06/04 13:08, 8F
推
06/04 13:12, , 9F
06/04 13:12, 9F