zxd314271 2022-11-28 23:08 采纳率: 100%
浏览 51
已结题

链表打印乱码,目录下未出现任何中文,各种编译器都无法通过

很简单但就是不知道哪里出了问题。
链表总是打印出来乱码。
求各位帮忙,只用看两个函数,非常感谢。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include "lab52.h"
void welcome(){
    printf("format of statistical information:id name number");
    printf("please enter the corresponding code number\n"); 
    printf("1.insert\n");
    printf("2.delete\n");
    printf("3.search\n");
    printf("4.change\n");
    printf("5.store\n");
    printf("6.all display\n");
    printf("7.single display\n"); 
    printf("8.sort\n");
    printf("else.don't save the disk and exit the system\n"); 
}
void insert(list *f){
    printf("please enter them in order: id name number\n");
    list *newnode=(list *)malloc(sizeof(list));
    newnode->next=NULL;
    if(NULL==f)f=newnode;
    else{
    newnode->next=f;
    f=newnode;}
    scanf("%s %s %d",&newnode->data.id,&newnode->data.name,&newnode->data.num);
    printf("the entry was successful\n");
    system("pause");
    system("cls");
}

void prin(list *f){
    list *p=f;
    while(1){    
    printf("%s\t%s\t%d\n",p->data.id,p->data.name,p->data.num);
    p=p->next;
    if(p==NULL)break;
    }
    system("pause"); 
    system("cls"); 
}

int main()
{   list *first=(list *)malloc(sizeof(list));
    first=NULL;
       while(1){
    welcome();
    char a=getch();
        switch(a)
        {
            case '1':
            insert(first);
            break;
            case '2':    
            break;
            case '3':
             break;
            case '4': 
            break;
            case '5': 
            break;
            case '6': 
            prin(first);
            break;
            case '7': 
            break;
            default: 
            exit(0);
        }
    }
    return 0;
}

以下是lab52.h

#define MAX_ID_LEN 30

#define MAX_NAME_LEN 30
typedef struct {
char id[MAX_ID_LEN];
char name[MAX_NAME_LEN];
int num;
} info;


typedef struct node
{
info data;
struct node *next;
} list;

  • 写回答

2条回答 默认 最新

  • 叶落花枯 2022-11-28 23:20
    关注

    insert 函数只是插入了节点而已,scanf 接收输入的变量有问题,id 和 name 数组不需要 & 取地址。
    scanf("%s %s %d", newnode->data.id, newnode->data.name, &newnode->data.num);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月29日
  • 已采纳回答 11月29日
  • 赞助了问题酬金15元 11月28日
  • 创建了问题 11月28日

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记