结构体中有char和int,如何让系统区分char和后面的int?

Zhang_Yanzhen 2018-02-11 08:30:31

C语言代码运行的时候,char在int前面,输入数据的时候“,12”被归入char,而int部分数据,求各位大神指点一下。

代码如下:
#include<stdio.h>
#include<stdlib.h>

struct student
{
long num;
char name[20];
int old;
struct student *next;
};

typedef struct student List;

List* creatlist();
List* insertlist(List *h,List *s);
List* deletelist(List *h,long num);
void displist(List *h);

void main()
{
List *h,*p;
long num;

h=creatlist();
printf("学号 姓名 年龄:\n");
displist(h);

printf("输入要插入的节点元素:\n");
p=(List*)malloc(sizeof(List));
scanf("%d,%s,%d",&p->num,p->name,p->old);
h=insertlist(h,p);
printf("学号 姓名 年龄:\n");
displist(h);

printf("输入一个要删除节点的学号:\n");
scanf("%d",&num);
h=deletelist(h,num);
printf("学号 姓名 年龄:\n");
displist(h);
}


List* creatlist()
{
List *h,*pre,*p;
int i,n;
h=NULL;
printf("请输入创建链表个数:\n");
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
p=(List*)malloc(sizeof(List));
p->next=NULL;
if(h==NULL)
{
h=p;
}
else
{
pre=p->next;
}
scanf("%d,%s,%d",&p->num,p->name,p->old);
pre=p;
}
return h;
}


List* insertlist(List *h,List *s)
{
List *pre,*p;
p=h;
if(h==NULL)
{
h=s;
s->next=NULL;
}
else
{
while((s->num>p->num)&&(p->next!=NULL))
{
pre=p;
p=p->next;
}

if(s->num<=p->num)
{
if(h==p)
{
h=s;
s->next=p;
}
else
{
pre->next=s;
s->next=p;
}
}
else
{
p->next=s;
s->next=NULL;
}
}
return h;
}


List* deletelist(List *h,long num)
{
List *pre,*p;
if(h==NULL)
{
printf("链表为空,删除失败!\n");
return 0;
}

p=h;
while(p->num!=num&&p->next!=NULL)
{
pre=p;
p=p->next;
}

if(p->num=num)
{
if(p==h)
h=p->next;
else
pre->next=p->next;
free(p);
printf("成功删除!\n");
}
else
printf("没有找到要删除的节点。\n");

return h;
}


void displist(List *h)
{
List *p=h;
while(p!=NULL)
{
printf("%d %s %d\n",p->num,p->name,p->old);
p=p->next;
}
}
...全文
329 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zhang_Yanzhen 2018-02-12
  • 打赏
  • 举报
回复
谢谢你们,能行。
赵4老师 2018-02-12
  • 打赏
  • 举报
回复
scanf("%d,%19[^,],%d",&p->num,p->name,p->old);
赵4老师 2018-02-12
  • 打赏
  • 举报
回复
scanf("%d,%19[^,],%d",&p->num,p->name,&p->old);
幻夢之葉 2018-02-11
  • 打赏
  • 举报
回复
使用空格而非逗号
scanf("%d,%s,%d",&p->num,p->name,p->old);
因为使用逗号,读入到char数组中的时候不会自动断句,会当做字符继续直到遇到空格或者换行等字符才结束

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧