鱼C论坛

 找回密码
 立即注册
查看: 3631|回复: 11

[已解决]大佬们看看,为啥我这个程序运行一行就结束了啊啊啊啊

[复制链接]
发表于 2022-10-4 10:59:25 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 清如许 于 2022-10-4 11:01 编辑
#include <stdio.h> 
int main()
{
        char name;
        int length,weight;
        double foreign_length,foreign_weight;
        foreign_length=length*0.3937;
        foreign_weight=weight*2.2046;

        printf("-----您好,欢迎使用能转化系统!------\n");//运行到这里就结束力。。。。555555
        printf("请输入以下信息:\n");

        printf("姓名:");
        scanf("%s\n",name);
 
        printf("身高:");
        scanf("%d\n",&length);

        printf("体重:\n");
        scanf("%d\n",&weight);

        printf("-----请稍后,正在进行转化-----\n");

        printf("你的身高转化成功:%.3f\n",foreign_length);
        printf("你的体重转化成功:%.3f\n",foreign_weight);
        
        return 0;
 } 
最佳答案
2022-10-4 11:20:26
清如许 发表于 2022-10-4 11:11
意思是不同的变量名存储空间不一样吗?

在中文版Windows系统中,使用的编码是ANSI,也就是GBK编码,在GBK编码中,一个中文字符占2个字节,256字节够你存入127个中文字符
在Linux中,使用的是utf-8编码,在utf-8编码中,一个中文字符占3个字节,256字节够你存入85个中文字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-10-4 11:00:26 | 显示全部楼层
还有一个问题,我想用scanf输入一个中文名,要咋整啊?char的空间是不是不够啊,请教各位了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-4 11:01:30 | 显示全部楼层


scanf 中去掉 \n 试试看:
#include <stdio.h>
int main()
{
        char name;
        int length,weight;
        double foreign_length, foreign_weight;
        foreign_length = length * 0.3937;
        foreign_weight = weight * 2.2046;
        printf("-----您好,欢迎使用能转化系统!------\n");
        printf("请输入以下信息:\n");
        printf("姓名:");
        scanf("%s", name);
        printf("身高:");
        scanf("%d", &length);
        printf("体重:\n");
        scanf("%d", &weight);
        printf("-----请稍后,正在进行转化-----\n");
        printf("你的身高转化成功:%.3f\n", foreign_length);
        printf("你的体重转化成功:%.3f\n", foreign_weight);

        return 0;
 }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-10-4 11:06:42 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-4 11:09 编辑
        char name[256] ;  // name 要定义成数组
        scanf("%d" , &length) ;   // "%d" 后面不要加 '\n',所有的 scanf() 都有同样的问题
        name 的存储空间足够大,中文字符随便输
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-4 11:08:47 | 显示全部楼层
Twilight6 发表于 2022-10-4 11:01
scanf 中去掉 \n 试试看:

不行哇大佬,还是输入一行数据就结束了55555
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-4 11:11:26 | 显示全部楼层
jackz007 发表于 2022-10-4 11:06
name 的存储空间足够大,中文字符随便输

意思是不同的变量名存储空间不一样吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-4 11:13:21 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-4 11:14 编辑
清如许 发表于 2022-10-4 11:11
意思是不同的变量名存储空间不一样吗?


         变量名和存储内容毫无关系,和存储空间的大小有关系。
         Windows 下一个西文字符占用 1 个 char,一个中文字符占用 2 个 char,Linux 下一个西文字符占用 1 个 char,一个中文字符占用 3 个 char。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-4 11:14:54 | 显示全部楼层
清如许 发表于 2022-10-4 11:11
意思是不同的变量名存储空间不一样吗?

char是字符,不是字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-4 11:20:26 | 显示全部楼层    本楼为最佳答案   
清如许 发表于 2022-10-4 11:11
意思是不同的变量名存储空间不一样吗?

在中文版Windows系统中,使用的编码是ANSI,也就是GBK编码,在GBK编码中,一个中文字符占2个字节,256字节够你存入127个中文字符
在Linux中,使用的是utf-8编码,在utf-8编码中,一个中文字符占3个字节,256字节够你存入85个中文字符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-4 11:23:27 | 显示全部楼层
临时号 发表于 2022-10-4 11:20
在中文版Windows系统中,使用的编码是ANSI,也就是GBK编码,在GBK编码中,一个中文字符占2个字节,256字节够你 ...

哦哦,谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-4 11:23:59 | 显示全部楼层
jackz007 发表于 2022-10-4 11:13
变量名和存储内容毫无关系,和存储空间的大小有关系。
         Windows 下一个西文字符占用 ...

哦哦,谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-10-4 11:25:04 | 显示全部楼层
jackz007 发表于 2022-10-4 11:06
name 的存储空间足够大,中文字符随便输

大佬,去掉\n也不行啊,只能运行一行。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 21:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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