回 帖 发 新 帖 刷新版面

主题:下面这个strcpy函数内参数设置哪里不合理

#include<stdio.h>
#include<stdlib.h>
int add(char*,int);
int get();
int show();
struct sttudent{
       char name[20];
       int score;
        struct  student *next;
        };
        typedef struct student s_data;
        s_data *front=NULL;
        s_data *rear=NULL;
 int main()
 {
     int select,score;
     char name[20];
     do
     {
          printf("(1)存入 (2)   取出     (3)  显示    (4)   离开=>");
          scanf("%d",&select);
          switch(select)
          {
              case 1:
              printf("姓名   成绩:");
              scanf("%s %d",name,&score);
              add(name,score);
              break;
              case 2:
                   get();
                   break;
              case 3:
                   show();
                   break;
                   }
          }while(select!=4);
          system("pause");
          return 0;
          }
int add(char* name,int score)
{
    s_data *new_data;
    new_data=(s_data*)malloc(sizeof(s_data*));
    strcpy(new_data->name,name);
    new_data->score=score;
    if(rear==NULL)
    front=new_data;
    else
      rear=new_data;
      new_data->next=NULL;
      }
int get()
{
    s_data *freeme;
    if(front=NULL)
    puts("队列已空!");
    else
    {
        printf("姓名:%s\t     成绩:%d'''''取出\n",front->name,front0>score);
        freeme=front;
        front=front>next;
        free(freeme);
        }
}

int show()
{
    s_data *ptr;
    ptr=front;
    if(ptr-==NULL)
     puts("队列已空!");
     else
     {
         puts("front0>rear");
         while(ptr!=NULL)
         {
           printf("姓名:%s\t  成绩:%d\n",ptr->name,ptr->score);
           ptr=ptr0>next;
           }
        }
    }

程序编译到add函数里的strcpy时就通不过了,试着将strcpy内的参数调整了几种格式都无法编译通过,求高手指点

程序的目的是编写一个队列通过动态分配内存来配置堆栈的空间,并且将学生的姓名成绩的数据结构存入堆栈的元素中

 

回复列表 (共1个回复)

沙发

new_data=(s_data*)malloc(sizeof(s_data*));
strcpy(new_data->name,name);//
malloc后最好对new_data中的成员初始化下。尤其当出现name[20]的情况。
链表节点的添加add()函数貌似有问题。
if(rear==NULL)
front=new_data;
else
rear=new_data;
new_data->next=NULL;
这样节点并没有添加进去。

我来回复

您尚未登录,请登录后再回复。点此登录或注册