c语言空txt文件读出乱码

新建的空的txt文件,读取telephone.txt到链表,显示所有信息时读出的是一堆乱码,但是txt文件里没有存放任何数据。
/*读取telephone.txt文件中的内容创建学生链表*/
ID* create()
{
ID head;
ID *p1,*p2;
p2 = (ID
)malloc(LENTEL);
head = p2;

FILE *fp;
if((fp = fopen("telephone.txt","r")) == NULL)
{
       printf("联系人文件打开错误,请将telephone.txt放置与程序同一目录下!\n");
       exit(0);
}


while(!feof(fp))
{
    p1 = (ID*)malloc(LENTEL);
    fscanf(fp,"%s%s%s%s\n",p1->name,p1->tele,p1->style,p1->mail);
    p1->next = NULL;
    p2->next = p1;
    p2 = p1;
}

fclose(fp);
return head;

}

//显示所有联系人
void Print_Inquire_All()
{
void menu_print_out();
ID *p1 = id->next;
menu_print_out();
printf("姓名 电话 分类 邮箱\n");
while (p1!=NULL)
{
printf("%s\t%s\t%s\t%s\n",p1->name,p1->tele,p1->style,p1->mail);
p1 = p1->next;
}

system("pause");            

}

3个回答

你会的啥编译器,是不是Unicode编码的问题

duanyuxuanP
duanyuxuanP vc6.0
5 年多之前 回复

申请的内存,请先清零。

duanyuxuanP
duanyuxuanP 如何清零呢 ?麻烦给出代码,谢谢了
5 年多之前 回复

用memset清空一下malloc的空间.
补充代码如下.
如果仍有问题,请回复

while(!feof(fp))
{
    p1 = (ID*)malloc(LENTEL);
        memset(p1,0,LENTEL);//这里加上这句话
    fscanf(fp,"%s%s%s%s\n",p1->name,p1->tele,p1->style,p1->mail);
    p1->next = NULL;
    p2->next = p1;
    p2 = p1;
}
qazsedcftt
王滕 回复duanyuxuanP: 如果可以的话,把所有代码发给我.
5 年多之前 回复
duanyuxuanP
duanyuxuanP 第一次运行(文件为空)时,乱码没有了,但是乱码的位置成了一些像空格的东西,占据了链表第一个节点。而存入数据后再次运行则不会有那段空白,从第一个节点开始就是我正常存入的数据了。
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐