我这里哪里错了,求救大佬
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
int num;
char name;
char sex;
}stu, * pstu;
int main(void)
{
stu s;
pstu p;
p = &s;
printf("请输入学号 姓名 性别\n");
scanf("%d %s %c", p->num,p->name,p->sex);
printf("%d %s %c\n", p->num, p->name, p->sex);
return 0;
} 可以输入,但是输出不了
你是不是忘了加取址运算符&{:10_269:} 本帖最后由 C丁洞杀O 于 2023-1-6 22:31 编辑
阿布布 发表于 2023-1-6 22:03
可以输入,但是输出不了
emmm,其实是压根就没有输入进去,C的特性,scanf这个函数是比较垃圾的输入函数,你需要提交数据的地址,所以,你的p->num并不是地址,要加上取地址符(&),当然,C++ 的cin, cout 显然会更加好用一点(推荐一下)
代码如下,是对的(你没输入,已经错了)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h> // 这个没啥用的库,单纯复制过来占内存的吗?(下面我用了,如果源代码没有,写注释的那行,可以删掉,没有用)
typedef struct student
{
int num = 20;
char name;
char sex;
}stu, * pstu;
int main(void)
{
stu s;
pstu p;
p = &s;
printf("请输入学号 姓名 性别\n");
scanf("%d %s %c", &(p->num),p->name,&(p->sex));
printf("%d %s %c\n", p->num, p->name, p->sex);
system("pause"); //就是个中断
return 0;
}
如果可以的话,求个最佳答案,谢谢! 可以了,谢谢大佬。
页:
[1]