鱼C论坛

 找回密码
 立即注册
查看: 1622|回复: 6

[已解决]关于scanf的问题

[复制链接]
发表于 2020-2-18 14:40:57 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 转会但姿势丶 于 2020-2-18 14:48 编辑

《带你学C带你飞》S1E8   字符和字符串   课后作业        编译器:Dev-C++
在用printf时用scanf遇到一些问题,你们先看一下代码:


                               
登录/注册后可看大图


  1. #include <stdio.h>

  2. int main()
  3. {
  4.         char name;
  5.         float cm;
  6.         float in;
  7.         float kg;
  8.         float lb;
  9.        
  10.         printf("请输入您的名字:");
  11.         scanf("%s", &name);
  12.         printf("请输入您的身高:");
  13.         scanf("%f", &cm);
  14.         printf("请输入您的体重:");
  15.         scanf("%f", &kg);
  16.         printf("========== 正在为您转换 ==========\n");
  17.         printf("%s的身高是%f(in),体重是%f(lb)。", name, cm, kg);
  18.        
  19.         return 0;
  20.          
  21. }
复制代码



                               
登录/注册后可看大图


想问的问题就在就在最后一行的printf,我在上面已经用scanf弄了name、cm和kg的变量值,前面运行没什么毛病为什么到最后一行printf那儿用不了?
求解答
最佳答案
2020-2-18 14:55:00
char name;   
这是一个字符
scanf("%c", &name);
printf("%c", name);


如果你想接收字符穿,定义的时候应该是字符数组
char name[32] = { 0 };
scanf("%s", name);
printf("%s",name);


总体来说就是你定义一个字符用来接收名字所以崩了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-18 14:54:03 | 显示全部楼层
name 是字符串,不能用 char name 声明。

应该这样:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     char name[100];
  5.     float cm;
  6.     float in;
  7.     float kg;
  8.     float lb;

  9.     printf("请输入您的名字:");
  10.     scanf("%s", &name);
  11.     printf("请输入您的身高:");
  12.     scanf("%f", &cm);
  13.     printf("请输入您的体重:");
  14.     scanf("%f", &kg);
  15.     printf("========== 正在为您转换 ==========\n");
  16.     printf("%s的身高是%f(in),体重是%f(lb)。", name, cm, kg);

  17.     return 0;
  18. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 14:54:37 | 显示全部楼层
改成这样:

  1. #include <stdio.h>

  2. int main()
  3. {
  4.         char name[1000];
  5.         float cm, kg;
  6.         
  7.         printf("请输入您的名字:");
  8.         scanf("%s", &name);
  9.         printf("请输入您的身高:");
  10.         scanf("%f", &cm);
  11.         printf("请输入您的体重:");
  12.         scanf("%s", &kg);
  13.         printf("========== 正在为您转换 ==========\n");
  14.         printf("%c的身高是%f(in),体重是%f(lb)。", name, cm, kg);
  15.         
  16.         return 0;
  17.          
  18. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 14:55:00 | 显示全部楼层    本楼为最佳答案   
char name;   
这是一个字符
scanf("%c", &name);
printf("%c", name);


如果你想接收字符穿,定义的时候应该是字符数组
char name[32] = { 0 };
scanf("%s", name);
printf("%s",name);


总体来说就是你定义一个字符用来接收名字所以崩了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 17:13:43 | 显示全部楼层
我叫MD 发表于 2020-2-18 14:55
char name;   
这是一个字符
scanf("%c", &name);

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

使用道具 举报

 楼主| 发表于 2020-2-18 17:15:03 | 显示全部楼层
zltzlt 发表于 2020-2-18 14:54
name 是字符串,不能用 char name 声明。

应该这样:

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

使用道具 举报

 楼主| 发表于 2020-2-18 17:15:43 | 显示全部楼层

谢啦,已经知道了~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-4 14:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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