结构体的输入??

来源:百度知道 编辑:UC知道 时间:2024/06/07 20:40:42
代码如下: 我是想输入一个结构体数据,比如输入 101 m xiaohong,输出却是101 m ,字符串不输出,我调换了位置也不行,怎么回事,好像 char sex 和char name[20]不能放在一起
#include"stdafx.h"
#include<stdio.h>
#include<malloc.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
int num;
char sex;
char name[20];

};
void main()
{
struct student *p1;
p1=(struct student *)malloc(LEN);
scanf("%d%c%s",&p1->num,&p1->sex,p1->name);

printf("%d %c %s\n",p1->num,p1->sex,p1->name);

}
因为p1->name已经降级为指针,不是字符串了。

所以你要先把里面的内容自制出来,然后再printf。

什么意思,不懂,能不能说详细点,最好把代码写出来

是你输入的问题!

你中间加空格了吧! 我试验过了!

你加的空格 算到了 p1->sex 里 所以 p1->name就是m 了!

楼主的代码没有任何问题,只是在输入字符串时格式控制有一些语言本身的不确定因素:
scanf("%d%c%s",&p1->num,&p1->sex,p1->name);
这一句格式控制上,你改成这种写法试一下.
scanf("%d %c %s",&p1->num,&p1->sex,p1->name);
在每一个格试控制前加一个空格分隔应该就可以了.

因为p1->name已经降级为指针,不是字符串了。

所以你要先把里面的内容自制出来,然后再printf。