当前位置:首页 » 存储配置 » c存储中文乱码

c存储中文乱码

发布时间: 2023-03-13 08:37:22

c语言出现乱码

有两个问题:

一、变量a是float型,用%d输入输出会出错,可以考虑把变量d定义成int型;

二、姓名是字符串,不是字符,可以考虑用字符数组来存储

修改如下:

#include<stdio.h>
#include<stdlib.h>
intmain()
{
inta;
floatb,c;
chard[10];
printf("请输入你的姓名: ");
gets(d);
printf("请输入你的年龄: ");
scanf("%d",&a);
printf("请输入你的身高m: ");
scanf("%f",&b);
printf("请输入你的体重kg: ");
scanf("%f",&c);//以下代码测试输入的正确性
printf("姓名:%s ",d);
printf("年龄:%d ",a);
printf("身高:%.2fm ",b);
printf("体重:%.2fkg ",c);
return0;
}

❷ c语言出现乱码

有两个问题:

一、变量a是float型,用%d输入输出会出错,可以考虑把变量d定义成int型;

二、姓名是字符串,不是字符,可以考虑用字符数组来存储。

修改如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
float b,c;
char d[10];
printf("请输入你的姓名:\n");
gets(d);
printf("请输入你的年龄:\n");
scanf("%d",&a);
printf("请输入你的身高m:\n");
scanf("%f",&b);
printf("请输入你的体重kg:\n");
scanf("%f",&c); //以下代码测试输入的正确性
printf("姓名:%s\n",d);
printf("年龄:%d\n",a);
printf("身高:%.2fm\n",b);
printf("体重:%.2fkg\n",c);
return 0;
}

❸ C语言控制台程序,中文输出变成乱码,怎么解决

这里涉及到一个字符在源代码(文本)中,编译好的二进制文件中,以及最后控制台输出编码形式的区别.
首先,要明确一点:C(语言/程序)并不理解ANSI,UTF-8以及任何其他编码.它只知道处理你给它的字符的二进制表示.
在简体中文Windows下,默认的文本保存编码是ANSI(即GBK);Linux下根据系统locale设定,一般应该是(zh_CN.UTF-8).(以下基于简体中文Windows)
1)对于源文件中保存的"中文"这个字符串,VS2008看到的就是"0xd6d0"和"0xcec4"的形式(默认ANSI编码得到).但编译器才不管是不是GBK神马的,它就管那串数字.
区别,MinGW看到的是"0xe4b8ad"和"0xe69687"(gcc默认UTF-8).注意,用MinGW编译的源文件中有中文宽字符必须保存为UTF-8编码.
2)然后,在二进制文件中的存储形式,对传统的字符串(char str[] = "中文";),编译器什么都不做,直接把那串数字(如"0xd6d0","0xcec4")搬过去塞进二进制文件.
但对于宽字符串(wchar_t wstr[] = L"中文";),编译器会将其做转换,转换成Unicode编码格式(在Windows是UTF-16,而Linux下是UTF-32).如"中文"的16位Unicode是"0x4e2d"和"0x6587",然后把这串转换后的数字("0x4e2d","0x6587")塞进二进制文件中.(这里VS和MinGW做的没有区别)
这里有点需要注意,编译器必须知道你的源文件保存的编码!如VS默认是ANSI编码,如果你用UTF-8保存.c源文件去用VS打开看一定是乱码.同理如果你用mingw编译ANSI编码保存的源文件,也会出错!(但可以修改编译选项解决,见文章末尾) 在本文这里这个原因其实很好理解,因为编译器需要知道,如果它要将一个保存在文件中的字符转成宽字符时,是从什么编码转到Unicode.(可见上述VS是GBK->Unicode,而MinGW是UTF-8->Unicode)

❹ C语言运行的时候汉字全部乱码怎么回事

1、汉字乱码是因为缓冲区有字符,需要用fflush(stdin);来清空键盘缓冲区,
使用getch等都是治标不治本的办法,可以多学习一下fflush的使用,对于大批量的手动输入,很用。
2、例程:

#include"stdio.h"
#include"stdlib.h"
#include<conio.h>
main()
{

charx;
while(1)
{
printf("请输入一个小写字母:");
fflush(stdin);//清空键盘缓冲区
x=getchar();
printf("大写字母为: ");putchar(x-32);
}
}
热点内容
linux查看hadoop版本 发布:2025-07-10 11:08:53 浏览:282
调度算法的选择 发布:2025-07-10 11:08:03 浏览:972
nodejs源码安装 发布:2025-07-10 11:06:34 浏览:218
安卓手机怎么投屏到gl8 发布:2025-07-10 10:54:47 浏览:276
区县数据库 发布:2025-07-10 10:51:59 浏览:918
服务器遭到破坏我的世界 发布:2025-07-10 10:51:53 浏览:647
ftp服务器攻击 发布:2025-07-10 10:28:46 浏览:140
提高studio编译速度 发布:2025-07-10 10:28:46 浏览:415
Char在sql 发布:2025-07-10 10:19:19 浏览:783
请密码不叫什么说话 发布:2025-07-10 10:06:22 浏览:115