不知道怎么的姓名输出不了
#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;
}
这两行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); KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?
不行 a.no 在使用 strcpy 时缓冲区溢出。 #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;
} KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?
我非常的确定,他写的没错。 永恒的蓝色梦想 发表于 2020-5-24 18:22
a.no 在使用 strcpy 时缓冲区溢出。
可是学号最后可以输出,这个溢出和姓名有什么关系吗? KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?
我改成你这样还是出现之前的问题。 永恒的蓝色梦想 发表于 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;
} KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?
我觉得不需要…… 晨蒙蒙 发表于 2020-5-24 19:09
我刚才听你的改了一下,感觉是因为学号与名字全是char型导致的。可是把学号改成int型又出问题了
#includ ...
就是三楼说的strcpy,10位,实际最后一位'\0'写到name里去了,导致输入"name",成了"\0ame\0" 如楼上所说。 永恒的蓝色梦想 发表于 2020-5-24 19:31
如楼上所说。
谢了
java2python 发表于 2020-5-24 19:24
就是三楼说的strcpy,10位,实际最后一位'\0'写到name里去了,导致输入"name",成了"\0ame\0"
谢谢
页:
[1]