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標准。