鱼C论坛

 找回密码
 立即注册
查看: 1305|回复: 13

[已解决]不知道怎么的姓名输出不了

[复制链接]
发表于 2020-5-24 17:48:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
#include<string.h>
struct student
{
char no[10];//学号
char name[10];//姓名
int age;//年龄
char number[11];//电话
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 19:24:36
晨蒙蒙 发表于 2020-5-24 19:09
我刚才听你的改了一下,感觉是因为学号与名字全是char型导致的。可是把学号改成int型又出问题了
#includ ...

就是三楼说的strcpy,10位,实际最后一位'\0'写到name里去了,导致输入"name",成了"\0ame\0"
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-24 18:09:40 | 显示全部楼层
这两行
  1. printf("\n\na同学的信息如下: \n学号:%s \n姓名: %s \n年龄:%d \n 电话:%s \n分数:%.1f\n",
  2.                                       a.no,a.name  ,a.age,a.number,a.score);
复制代码

为什么放在了两行?

要是放在两行的话要这样:
  1. printf("\n\na同学的信息如下: \n学号:%s \n姓名: %s \n年龄:%d \n 电话:%s \n分数:%.1f\n",\
  2. a.no,a.name  ,a.age,a.number,a.score);
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 18:14:19 | 显示全部楼层
KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?

不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 18:22:44 | 显示全部楼层
a.no 在使用 strcpy 时缓冲区溢出。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 18:24:37 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<string.h>
  3. struct student
  4. {
  5. char no[10];//学号
  6. char name[10];//姓名
  7. char age[11];//年龄
  8. char number[11];//电话
  9. float score;//分数
  10. };
  11. int main()
  12. {
  13. student a;
  14. a.age=18;
  15. a.score=90;
  16. printf("请输入a学生的姓名: ");
  17. scanf("%s",a.name);
  18. getchar();
  19. printf("请输入a学生的电话:");
  20. gets(a.number);
  21. strcpy(a.no,"2019240010");
  22.    
  23. printf("\n\na同学的信息如下: \n学号:%s \n姓名: %s \n年龄:%d \n 电话:%s \n分数:%.1f\n",
  24.                                       a.no,a.name  ,a.age,a.number,a.score);
  25. return 0;
  26. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 18:24:56 | 显示全部楼层
KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?

我非常的确定,他写的没错。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-24 18:49:47 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-24 18:22
a.no 在使用 strcpy 时缓冲区溢出。

可是学号最后可以输出,这个溢出和姓名有什么关系吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-24 18:54:06 | 显示全部楼层
KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?

我改成你这样还是出现之前的问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[10];//学号
char name[10];//姓名
int age;//年龄
char number[11];//电话
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;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 19:17:56 | 显示全部楼层
KevinHu 发表于 2020-5-24 18:09
这两行
为什么放在了两行?

我觉得不需要……
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

就是三楼说的strcpy,10位,实际最后一位'\0'写到name里去了,导致输入"name",成了"\0ame\0"
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 19:31:06 | 显示全部楼层
如楼上所说。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-24 19:39:35 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 05:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表