C语言gb
㈠ c语言显示GB2312
用 GB2312编码 显示 汉字,那是相对于 带中文字库的 点阵LED液晶显示屏 的,那么:
首先是你得有一块 点阵LED液晶屏,还是带 中文字库 的。
再是你得根据这个 点阵LED液晶屏 的数据手册,编写它 的读写驱动函数,用 写函数 把GB2312编码输入到 液晶屏中才能显示。
㈡ 用C语言,如何得到某个汉字在GB2312字库中的十进制区码位码
int offset;
offset = '啊';
这时候offset的值可以看到为0xb0a1,即啊字的GB码
不能用"",否则就变字符串了。另外GB码是不会随系统而变化的
㈢ 在阅读C语言入门经典(第4版)时,有下面这句话 MB需要20个位,GB需要30个位......无法理解
通俗一点的说法是:
1位只能表示0或1,2位可以表示0-3,也即2的平方,同理5位即可以表示2的5次方,推理2的30次方(即GB级别)需要30位来表示。
㈣ 弱弱的问一句,C语言能不能实现字符串的编码格式转换 GB2312toUTF-8
其实 linux 和 windows 的系统函数都是C函数,并且提供了GB2312toUTF-8的函数,所以C语言是可以实现转码的。以下是windows的例子:int num = ::MultiByteToWideChar(CP_ACP, 0, "你好", -1, NULL, 0);wchar_t* m_arrayShort = new wchar_t[num];::MultiByteToWideChar(CP_ACP, 0, "你好", -1, m_arrayShort, num); int len = ::WideCharToMultiByte (CP_UTF8, 0, (LPCWSTR)m_arrayShort, num, 0, 0, NULL, NULL);char *tmpPT = new char[len+1];::WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)m_arrayShort, num, tmpPT, len, NULL, NULL);tmpPT[len] = 0;
㈤ C语言UTF8要怎样转gb2312
一、这个转换关键要有码表,而不是什么语言。UTF-8不一定总能转换成GB2312、GBK、GB-18030等。GB2312实际上是UTF-8(Unicode的一种形式)的一个子集。
常用的基本方式有两个类别:
1、iconv,这个是通用的,具体的看手册
2、Windows的WideCharToMultiByte、MultiByteToWideChar。WideChar就是Unicode(UTF-16),UTF-8、GB2312等同属于MultiByte,先要将UTF-8变成WideChar,然后将WideChar再变成GB2312。
二、如果只有一两个文件,用记事本打开UTF8文件,然后保存,保存时点击“保存选项”按钮,选择文件格式为ANSI,在中文Windows环境下,这个新文件就是GB2312格式的了。
㈥ c语言中字符型数据在内存中储存的是什么
1.字符型数据在内存中储存的是它的ASCII码值,它是一个字节,所有数据类型在内存中都是以0和1代码二进制储存的,这个原则不会变。
2.字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。在
ASCII
编码中,一个英文字母字符存储需要1个字节。在
GB
2312
编码或
GBK
编码中,一个汉字字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3到4个字节。在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。在UTF-32编码中,世界上任何字符的存储都需要4个字节。
3.char是C/C++整型数据之一,其它的如int/long/short等不指定signed/unsigned时都默认是signed,char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器如pSOS的编译器,还可以通过编译开关来指定它是有符号数还是无符号数。
㈦ C语言程序设计题,写两个函数gy和gb,分别求两个整数的最大公约数和最大公倍数,
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>
//getch(),putch()函数头文件
long
maxdiv(long
a,long
b);
long
mintime(long
a,long
b,long
maxdivalue);
long
c;
long
count=0;
main()
{
system("color
2f");
printf("请输入两个正整数:\n");
long
a;
long
b;
scanf("%d%d",&a,&b);
printf("\n正在求最大公约数:\n");
_sleep(500);
c=maxdiv(a,b);
printf("最大公约数是:%d
",c);
printf("进入循环体
%d
次\n",count);
count=0;
printf("\n正在求最小公倍数:\n");
_sleep(500);
printf("最小公倍数是:%d
",mintime(a,b,c));
printf("进入循环体
%d
次\n",count);
char
ch=getch();
}
long
maxdiv(long
a,long
b)
{
long
temp=1;
long
min=a>b?b:a;
long
c=(long)sqrt(min);
long
d=min;
for(long
i=1;i<=c;i++,d=min/i)
{
if((a%i==0&&b%i==0)&&(i>temp))
temp=i;
if((a%d==0&&b%d==0)&&(d>temp))
temp=d;
printf("i=
%d\n",i);
count++;
}
return
temp;
}
long
mintime(long
a,long
b,long
maxdivalue)
{
long
result;
if(maxdivalue==1)
{
result=a*b;
return
result;
}
else
{
result=
maxdivalue*mintime
(a/maxdivalue,b/maxdivalue,maxdiv(a/maxdivalue,b/maxdivalue));
return
result;
}
}
㈧ 用c语言输入你所用计算机的c盘容量,分别以mb,gb为单位显示c盘的容量
intmain(void)
{
floatsize=0f;
printf("Inputthestoragesize(unit:GB): ");
scanf("%f",&size);
printf("%.1fGB",size);
printf("%.1fMB",size*1024);
}
㈨ 在C语言里使用GB码
C语言不支持GB码,不用感到奇怪
另外你的程序错误太多,先把基础打好,中文的事情以后慢慢再来解决。