c语言标准中文
‘壹’ 什么叫做c语言
C语言是国际上广泛流行的,很有发展前途的计算机高级语言.它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件.
早期的操作系统等系统软件主要是用汇编语言编写的(包括 UNIX操作系统在内).由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差.为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作),例如:对内存地址的操作,位操作等).人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身.于是,C语言就在这种情况下应运而生了.
C语言是在B语言的基础上发展起来的,它的根源可以追溯到ALGOL 60. 1960年出现的ALGOL 60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序.1963年英国的剑桥大学推出了CPL(CombinedProgram- ming Language)语言.CPL语言在ALGOL 60的基础上接近了硬件一些,但规模比较大,难以实现.1967年英国剑桥大学的Matin Richards对 CPL语言作了简化,推出了BCPL(Basic Combined Programming Language)语言.1970年美国贝尔实验室的 Ken Thompson以 BCPL语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的 B语言( 取 BCPL的第一个字母),并用 B语言写第一个UNIX操作系统,在PDP-7上实现. 1971年在PDP-11/20上实现了B语言,并写了UNIX操作系统.但B语言过于简单,功能有限.1972年至 1973年间,贝尔实验室的 D.M.Ritchie在B语言的基础上设计出了C语言(取 BCPL的第二个字母).C语言既保持了BCPL和B语言的优点(精练,接近硬件),又克服了它们的缺点(过于简单,数据无类型等). 最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的.1973年,K.Thom- pson和D.M.ritchie两人合作把UNIX的90%以上用 C改写(UNIX第5版.原来的 UNIX操作系统是1969年由美国的贝尔实验室的 K.Thompson和D.M.Ritchie开发成功的,是用汇编语言写的).
后来,C语言多次作了改进,但主要还是在贝尔实验室内部使用.直到1- 975年UNIX第6版公布后 ,C语言的突出优点才引起人们普遍注意.1977年出现了不依赖于具体机器的C语言编译文本《可移植C语言编译程序》,使C移植到其它机器时所做的工作大大简化了,这也推动了UNIX操作系统迅速地在各种机器上实现.例如,VAX,AT&T等计算机系统都相继开发了UNIX.随着 UNIX的日益广泛使用,C语言也迅速得到推广.C语言和UNIX可以说是一对孪生兄弟,在发展过程中相辅相成.1978年以后,C语言已先后移植到大,中,小,微型机上,已独立于UNIX和PDP了.现在C语言已风靡全世界,成为世界上应用最广泛的几种计算机语言之一.
以1978年发表的UNIX第7版中的C编译程序为基础,Brian W.Kernighan和 Dennis M.Ritchie(合称K&R)合着了影响深远了名着《The C Programming Lan- guage》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,它被称为标准C.1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充 ,制定了新的标准,称为ANSI C.ANSI C比原来的标准C有了很大的发展.K&R在1988年修改了他们的经典着作《The C Progra- mming Language》 ,按照ANSI C的标准重新写了该书.1987年,ANSI C又公布了新标准--87 ANSI C .目前流行的C编译系统都是以它为基础的.
=========
上面说的87ANSI C已经老了,
现在最新的标准是C98
‘贰’ C语言翻译成中文
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。
‘叁’ 如何用C语言输出中文
在C程序中显示汉字
在许多C程序设计中,要用到汉字进行提示或人机交互,而现行的Turbo C集成开发环境不是汉化的,如何编制能显示汉字的C程序呢?
下面的方法可以帮你在西文环境下显示汉字。这种方法是调用中文汉字库进行汉字显示。国家标准规定:汉字库分94个区,每个区有94个汉字(以位作区别),每个汉字在汉字库中有确定的区和位编号,这就是汉字的区位码。每个汉字在库中是以点阵字模形式存储的,一般采用16×16点阵(32字节)、24×24点阵(72字节),每个点用一个二进制位(0或1)表示,对应在屏幕上显示出来,就是相应的汉字。
由于在中文环境下,输入的是汉字的内码,我们必须将之转换成区位码,算出偏移量,从字库中找到对应的汉字,将其字模显示即可。
内码转换成区位码方法如下:
qh=c1-0xa0 wh=c2-0xa0
其区位码就是:
qw=qh*0xff+wh
该汉字在字库中离起点的位置是:
offset=(94*(qh-1)+(wh-1))*32L
程序例:
#include 〈graphics.h〉
#include 〈stdio.h〉
#include 〈fcntl.h〉
#include 〈io.h〉
#include 〈stdlib.h〉
#include 〈conio.h〉
#define ROW 1 //纵坐标放大倍数
#define COL 2 //横坐标放大倍数
void main()
{
int x,y;
char *s=〃汉字显示程序〃;
FILE *fp;
char buffer[32]; //buffer用来存储一个汉字
register m,n,i,j,k;
unsigned char qh,wh;
unsigned long offset;
int gd=DETECT,gm; //图形屏幕初始化
initgraph(&gd,&gm,〃 〃);
if ((fp=fopen(〃hzk16〃,〃rb〃))==NULL)
//打开汉字库,该字库可以在ucdos中找到
{ printf(〃Can't open haz16,Please add it〃);
getch(); closegraph(); exit(0);
}
x=20; y=100; //显示位置设置
while(*s)
{ qh=*(s)-0xa0; //汉字区位码
wh=*(s+1)-0xa0;
offset=(94*(qh-1)+(wh-1))*32L; //计算该汉字在字库中偏移量
fseek(fp,offset,SEEK_SET);
fread(buffer,32,1,fp); //取出汉字32字节的点阵字模存入buffer中(一个汉字)
for (i=0;i〈16;i++) //将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字
for(n=0;n〈ROW;n++)
for(j=0;j〈2;j++)
for(k=0;k〈8;k++)
for(m=0;m〈COL;m++)
if (((buffer[i*2+j]〉〉(7-k))&0x1)!=NULL)
putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN);
s+=2; //因为一个汉字内码占用两个字节,所以s必须加2
x+=30;
}
getch();
closegraph();
}
上述程序在Turbo C 2.0编译系统下运行成功,它可以将汉字放大显示,读者可以将它改成函数用在您的程序中显示汉字。
‘肆’ c语言中文编码的问题
输入可以采用GB2312或者GBK编码,如果繁体,就用UTF-8
读入汉字,从文件或者标准输入读,每次读一个字节,依次存入数组
如果可以确定是全部汉字,那么可以一次读入两个字节
结束符可以用\0,但是由于双字节汉字编码低位可能是0 所以结束符要用双\0
针对英文字符和汉字混合的情况,可以这样判断
每次读入一个字符,如果该字符大于0x80 则这是一个汉字的高位,继续读入并存储
如果该字符小于0x80 则这是一个英文字符,直接存储
do
read one byte
check
if > 0x80 read next
save
while(!end)
大致这样
直到读入约定的end标志,可以是\n 可以是eof
‘伍’ c语言标准是什么意思,什么ansi utf8是什么
ANSI C是美国国家标准协会(ANSI)对C语言发布的标准。使用C的软件开发者被鼓励遵循ANSI C文档的要求,因为它鼓励使用跨平台的代码。
C语言 由ANSI标准定义的32个关键字由ANSI标准定义的共32个 : auto double int struct break else long switch case enum register typedef char extern return union cons
UTF8是一种储存和传送的格式,如前所述,每个Unicode/UCS字符都以 2或4个bytes来储存,看看以下的比较:
以"I am Chinese"为例
用ANSI储存:12 Bytes
用Unicode/UCS2储存:24 Bytes + 2 Bytes(header)
用UCS4储存:48 Bytes + 4 Bytes(header)
以"我是中国人"为例
用ANSI储存:10 Bytes
用Unicode/UCS2储存:10 Bytes + 2 Bytes(header)
用UCS4储存:20 Bytes + 4 Bytes(header)
由此可见直接以Unicode/UCS的原始形式来储存是一种极大的浪费,而且也不利于互联网的传输(中文稍为合算一点^_^)。
有见及此,Unicode/UCS的压缩形式--UTF8出现了,套用官方网站的首句话‘UTF-8 stands for Unicode Transformation Format-8. It is an octet (8-bit) lossless encoding of Unicode characters.’,由于UTF也适用于编码UCS,故亦可称为‘UCS transformation formats (UTF)’
UTF8是以8bits即1Bytes为编码的最基本单位,当然也可以有基于16bits和32bits的形式,分别称为UTF16和UTF32,但目前用得不多,而UTF8则被广泛应用在文件储存和网络传输中。
‘陆’ 如何在C语言中输出中文!
在C程序中显示汉字<br>
<br>
<br>
<br>在许多C程序设计中,要用到汉字进行提示或人机交互,而现行的Turbo
C集成开发环境不是汉化的,如何编制能显示汉字的C程序呢?<br>
<br>
下面的方法可以帮你在西文环境下显示汉字。这种方法是调用中文汉字库进行汉字显示。国家标准规定:汉字库分94个区,每个区有94个汉字(以位作区别),每个汉字在汉字库中有确定的区和位编号,这就是汉字的区位码。每个汉字在库中是以点阵字模形式存储的,一般采用16×16点阵(32字节)、24×24点阵(72字节),每个点用一个二进制位(0或1)表示,对应在屏幕上显示出来,就是相应的汉字。<br>
<br>
由于在中文环境下,输入的是汉字的内码,我们必须将之转换成区位码,算出偏移量,从字库中找到对应的汉字,将其字模显示即可。<br>
<br>
内码转换成区位码方法如下:<br>
<br>
qh=c1-0xa0
wh=c2-0xa0<br>
<br>
其区位码就是:<br>
<br>
qw=qh*0xff+wh<br>
<br>
该汉字在字库中离起点的位置是:<br>
<br>
<br>offset=(94*(qh-1)+(wh-1))*32L<br>
<br>
程序例:<br>
<br>
#include
〈graphics.h〉<br>
<br>
#include
〈stdio.h〉<br>
<br>
#include
〈fcntl.h〉<br>
<br>
#include
〈io.h〉<br>
<br>
#include
〈stdlib.h〉<br>
<br>
#include
〈conio.h〉<br>
<br>
#define
ROW
1<br>
//纵坐标放大倍数<br>
<br>
#define
COL
2<br>
//横坐标放大倍数<br>
<br>
void
main()<br>
<br>
{<br>
<br>
int
x,y;<br>
<br>
char
*s=〃汉字显示程序〃;<br>
<br>
FILE
*fp;<br>
<br>
char
buffer[32];<br>//buffer用来存储一个汉字<br>
<br>
register
m,n,i,j,k;<br>
<br>
unsigned
char
qh,wh;<br>
<br>
unsigned
long
offset;<br>
<br>
int
gd=DETECT,gm;<br>//图形屏幕初始化<br>
<br>
initgraph(&gd,&gm,〃
〃);<br>
<br>
if
((fp=fopen(〃hzk16〃,〃rb〃))==NULL)<br>
<br>
//打开汉字库,该字库可以在ucdos中找到<br>
<br>
<br>{
printf(〃Can't
open
haz16,Please
add
it〃);<br>
<br>
getch();
closegraph();
exit(0);<br>
<br>
<br>}
<br>
<br>
x=20;
y=100;
//显示位置设置<br>
<br>
while(*s)<br>
<br>
<br>{
qh=*(s)-0xa0;
//汉字区位码<br>
<br>
<br>wh=*(s+1)-0xa0;<br>
<br>
<br>offset=(94*(qh-1)+(wh-1))*32L;
//计算该汉字在字库中偏移量<br>
<br>
<br>fseek(fp,offset,SEEK_SET);<br>
<br>
<br>fread(buffer,32,1,fp);
//取出汉字32字节的点阵字模存入buffer中(一个汉字)<br>
<br>
<br>for
(i=0;i〈16;i++)
//将32位字节的点阵按位在屏幕上打印出来(1:打印,0:不打印),显示汉字<br>
<br>
for(n=0;n〈ROW;n++)<br>
<br>
for(j=0;j〈2;j++)<br>
<br>
<br>for(k=0;k〈8;k++)<br>
<br>
<br>
for(m=0;m〈COL;m++)<br>
<br>
if
(((buffer[i*2+j]〉〉(7-k))&0x1)!=NULL)<br>
<br>
putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,GREEN);<br>
<br>
s+=2;
//因为一个汉字内码占用两个字节,所以s必须加2<br>
<br>
<br>x+=30;<br>
<br>
}<br>
<br>
getch();<br>
<br>
closegraph();<br>
<br>
}<br>
<br>
上述程序在Turbo
C
2.0编译系统下运行成功,它可以将汉字放大显示,读者可以将它改成函数用在您的程序中显示汉字。
‘柒’ C语言如何输入中文
输入以下代码就可以输入中文了:
如果是用TC进行编程,那么只能显示英文,如果用VC进行编程就可以显示中文了。
两者只是编译工具不一样,编程语言的使用是一样的。
代码:
#include<stdio.h>
#include<string.h>
int main(){
char name[6][20];
char temp[20];
printf("请输入6个人的名字: ");
int i;
for (i = 0; i < 6; i++){
gets(name[i]);
}
printf(" 这六个人的名字如下: ");
for (i = 0; i < 6; i++){
printf("%s ", name[i]);
}
printf(" ");
printf("按字典排序后如下所示: ");
int j, k;
for (j = 0; j < 6; j++)
for (k = j + 1; k < 6; k++)
{
if (strcmp(name[j], name[k])>0)
{
strcpy(temp, name[j]);
strcpy(name[j], name[k]);
strcpy(name[k], temp);
}
}
for (i = 0; i < 6; i++)
printf("%s ", name[i]);
}
(7)c语言标准中文扩展阅读:
C语言的起源:
C语言之所以命名为C,是因为 C语言源自Ken Thompson发明的B语言,而 B语言则源自BCPL语言。
1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
20世纪60年代,美国AT&T公司贝尔实验室(AT&T Bell Laboratory)的研究员Ken Thompson闲来无事,手痒难耐,想玩一个他自己编的,模拟在太阳系航行的电子游戏——Space Travel。
他背着老板,找到了台空闲的机器——PDP-7。但这台机器没有操作系统,而游戏必须使用操作系统的一些功能,于是他着手为PDP-7开发操作系统。后来,这个操作系统被命名为——UNIX。
‘捌’ C语言怎么定义中文字符
需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
‘玖’ c语言有中文版吗
C语言本身没有中文版,C语言的开发工具倒是有中文版。C语言如果改为中文编写,你就不嫌打字累吗?
‘拾’ c语言怎样才能输出中文(最简单的方法)
起初,C语言没有官方标准。1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(Brian Kernighan) 和 丹尼斯·里奇(Dennis Ritchie) 出版了一本书,名叫《The C Programming Language》。
这本书被 C语言开发者们称为K&R,很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为K&R C。
K&R C主要介绍了以下特色:
结构体(struct)类型
长整数(long int)类型
无符号整数(unsigned int)类型
把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i = -10还是i =- 10,使得处理上产生混淆。
即使在后来ANSI C标准被提出的许多年后,K&R C仍然是许多编译器的最 准要求,许多老旧的编译器仍然运行K&R C的标准。
1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。
1983年,美国国家标准协会(ANSI)成立了一个委员会X3J11,来制定 C语言标准。
1989年,美国国家标准协会(ANSI)通过了C语言标准,被称为ANSI X3.159-1989 "Programming Language C"。因为这个标准是1989年通过的,所以一般简称C89标准。有些人也简称ANSI C,因为这个标准是美国国家标准协会(ANSI)发布的。
1990年,国际标准化组织(ISO)和国际电工委员会(IEC)把C89标准定为C语言的国际标准,命名为ISO/IEC 9899:1990 - Programming languages -- C 。
因为此标准是在1990年发布的,所以有些人把简称作C90标准。不过大多数人依然称之为C89标准,因为此标准与ANSI C89标准完全等同。
1994年,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C89标准修订版,名叫ISO/IEC 9899:1990/Cor 1:1994,有些人简称为C94标准。
1995年,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C89标准修订版,名叫ISO/IEC 9899:1990/Amd 1:1995 - C Integrity [7] ,有些人简称为C95标准。