晨蒙蒙 发表于 2020-5-24 17:48:39

不知道怎么的姓名输出不了

#include<stdio.h>
#include<string.h>
struct student
{
char no;//学号
char name;//姓名
int age;//年龄
char number;//电话
float score;//分数
};
int main()
{
student a;
a.age=18;
a.score=90;
printf("请输入a学生的姓名: ");
scanf("%s",a.name);
getchar();
printf("请输入a学生的电话:");
gets(a.number);
strcpy(a.no,"2019240010");
   
printf("\n\na同学的信息如下: \n学号:%s \n姓名: %s \n年龄:%d \n 电话:%s \n分数:%.1f\n",
                                      a.no,a.name,a.age,a.number,a.score);
return 0;
}

KevinHu 发表于 2020-5-24 18:09:40

这两行printf("\n\na同学的信息如下: \n学号:%s \n姓名: %s \n年龄:%d \n 电话:%s \n分数:%.1f\n",
                                    a.no,a.name,a.age,a.number,a.score);
为什么放在了两行?

要是放在两行的话要这样:printf("\n\na同学的信息如下: \n学号:%s \n姓名: %s \n年龄:%d \n 电话:%s \n分数:%.1f\n",\
a.no,a.name,a.age,a.number,a.score);

xiaosi4081 发表于 2020-5-24 18:14:19

KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?



不行

永恒的蓝色梦想 发表于 2020-5-24 18:22:44

a.no 在使用 strcpy 时缓冲区溢出。

xiaosi4081 发表于 2020-5-24 18:24:37

#include<stdio.h>
#include<string.h>
struct student
{
char no;//学号
char name;//姓名
char age;//年龄
char number;//电话
float score;//分数
};
int main()
{
student a;
a.age=18;
a.score=90;
printf("请输入a学生的姓名: ");
scanf("%s",a.name);
getchar();
printf("请输入a学生的电话:");
gets(a.number);
strcpy(a.no,"2019240010");
   
printf("\n\na同学的信息如下: \n学号:%s \n姓名: %s \n年龄:%d \n 电话:%s \n分数:%.1f\n",
                                    a.no,a.name,a.age,a.number,a.score);
return 0;
}

永恒的蓝色梦想 发表于 2020-5-24 18:24:56

KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?



我非常的确定,他写的没错。

晨蒙蒙 发表于 2020-5-24 18:49:47

永恒的蓝色梦想 发表于 2020-5-24 18:22
a.no 在使用 strcpy 时缓冲区溢出。

可是学号最后可以输出,这个溢出和姓名有什么关系吗?

晨蒙蒙 发表于 2020-5-24 18:54:06

KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?



我改成你这样还是出现之前的问题。

晨蒙蒙 发表于 2020-5-24 19:09:17

永恒的蓝色梦想 发表于 2020-5-24 18:22
a.no 在使用 strcpy 时缓冲区溢出。

我刚才听你的改了一下,感觉是因为学号与名字全是char型导致的。可是把学号改成int型又出问题了
#include<stdio.h>
#include<string.h>
struct student
{
int no;//学号
char name;//姓名
int age;//年龄
char number;//电话
float score;//分数
};
int main()
{
student a;
a.age=18;
a.score=90;
printf("请输入a学生的姓名: ");
scanf("%s",a.name);
getchar();
printf("请输入a学生的电话:");
gets(a.number);
printf("请输入a学生的学号:");
scanf("%d",a.no);
printf("\n\na同学的信息如下: \n学号:%s \n姓名: %s \n年龄:%d \n 电话:%s \n分数:%.1f\n",
                                      a.no,a.name,a.age,a.number,a.score);
return 0;
}

liuzhengyuan 发表于 2020-5-24 19:17:56

KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?



我觉得不需要……

java2python 发表于 2020-5-24 19:24:36

晨蒙蒙 发表于 2020-5-24 19:09
我刚才听你的改了一下,感觉是因为学号与名字全是char型导致的。可是把学号改成int型又出问题了
#includ ...

就是三楼说的strcpy,10位,实际最后一位'\0'写到name里去了,导致输入"name",成了"\0ame\0"

永恒的蓝色梦想 发表于 2020-5-24 19:31:06

如楼上所说。

晨蒙蒙 发表于 2020-5-24 19:39:35

永恒的蓝色梦想 发表于 2020-5-24 19:31
如楼上所说。

谢了

晨蒙蒙 发表于 2020-5-24 19:40:49

java2python 发表于 2020-5-24 19:24
就是三楼说的strcpy,10位,实际最后一位'\0'写到name里去了,导致输入"name",成了"\0ame\0"

谢谢
页: [1]
查看完整版本: 不知道怎么的姓名输出不了