當前位置:首頁 » 編程軟體 » c51編譯器怎麼才能打出漢字

c51編譯器怎麼才能打出漢字

發布時間: 2022-09-28 16:54:27

編程序時怎麼不能打漢字我看有的視屏上怎麼都出現了漢字,而我卻打不出來,為什麼

"世界,您好!\n"
程序中顯示漢字,要用文本方式,即兩邊打上英文半形的引號

Ⅱ 請問我想把以前編輯好的c語言程序再次拿出來編輯該怎麼操作啊另外,怎麼才能在編輯器中打出漢字啊

我來回答,如果你的機器上裝有visual studio的話可以考慮有vc++打開嘛,雙擊.c文件,就可以直接用vc++打開了,如果不行,右鍵單擊圖標,選中打開方式,在程序里找到vc++程序就可以了,在vc++里編輯有好處就是可以用中文,而且編譯器比較c編譯器要嚴密的多,出錯誤比較容易發現,而且容易養成好的編程習慣,強烈建議 。還有你也可以在打開vc++程序後,在文件菜單點打開,找到你所要打開的文件打開。

Ⅲ c與c++程序設計學習與實驗系統怎麼輸不出漢字 是我電腦的原因但是我查不出 求解啊

首先,看是否支持中文編碼。如果支持的話,問題就不大。如果不支持,看有什麼地方可以設置,設置一下,就可以了。

Ⅳ C語言 如何輸入漢字

需要准備的材料分別有:電腦、C語言編譯器。

1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。

Ⅳ 為什麼在編譯器上編譯後顯示不了中文,是編譯器的緣故嗎 那什麼編譯器支持中文

要根本上了解怎麼顯示中文,你首先要 了解 字元集 這個概念
ascii 字元集共有256個字元 無漢字 unicode有各個國家的文字元號,包括幾乎所有漢字,
編譯器是否支持漢字取決於它採用什麼字元集。
當年沒有unicode時候,程序員大牛 用兩個ascii碼(從後128個取出)表示一個漢字代號。
才使漢字登上了計算機舞台

當年不能打漢字時候都是用漢字字型檔 以點陣方式從vga模式上畫出來的。。。
你上網查查 ascii 和unicode 能搜到所有你在這方面的疑惑

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

Ⅶ 急!c語言如何顯示漢字

先說明一下:在TC下面顯示漢字是比較麻煩的,實在想用,可以用VC。

DOS下的點陣漢字

你是否碰到過用啟動盤啟動系統後用DIR命令得到一串串莫名其妙的字元?有經驗的朋友會告訴你:那是漢字。漢字?你不禁會問:怎麼一個我一個也不認識。但那確確實實是漢字,如果你啟動UCDOS或其他的漢字系統後,就會看到那是一個個熟悉的漢字。同樣是漢字,為什麼前後會看到不同的結果?呵呵,其實在電腦硬體中,根本沒有漢字這個概念,也沒有英文的概念,這鐵玩意認識的概念只有——內碼。

☆漢字的內碼

點頭表示什麼?是「對」、「YES」,偏偏有的地方表示的意義卻恰恰相反。一個動作,有不同的詮釋;一個問題,有不同的答案;而一個符號,卻有不同的意義,關鍵在於:你是如何地理解。在電腦中亦如此,所有的數據都是以0和1保存的,按不同的數據操作,可以得到不同的結果。對於顯示英文操作,由於英文字母種類很少,只需要8位(一位元組)即可。而對於中文,常用卻有5000以上,於是我們的DOS前輩想了一個辦法,就是將ASCII表的高128個很少用到的數值以兩個為一組來表示漢字,即漢字的內碼。而剩下的低128位則留給英文字元使用,即英文的內碼。不信,你可以用記事本寫一C文件:
main()
{
unsigned char *s,*e="ABcd",*c="你好";
clrscr();
printf("English char =");

s=e;
while(*s!=0) /*C的字元串以0為結束符*/
{
printf("%3d,",*s);
s++;
}
printf("\nChinease char=");
s=c;
while(*s!=0)
{
printf("%3d,",*s);
s++;
}
getch();
}
再用TC輸入*.txt打開運行,看見了沒有,那些數值即英文和漢字的各位元組內碼。

☆漢字字模

得到了漢字的內碼後,還僅是一組數字,那又如何在屏幕上去顯示呢?這就涉及到文字的字模,字模雖然也是一組數字,但它的意義卻與數字的意義有了根本的變化,它是用數字的各位信息來記載英文或漢字的形狀。在硬體系統內,英文的字模信息一般固化在ROM里,即使在沒有進入系統的CMOS里,也可以讓你看到英文字元。而在DOS下,中文的字模信息一般記錄在漢字型檔文件HZK16里。

☆漢字型檔文件

了解字母和漢字是按字模位信息顯示的原理後,那如何得到漢字的字模信息呢?難道要我們自己去做?NO。DOS前輩們經過艱辛的努力,將製作好的字模放到了一個個標準的庫中以免去後輩的麻煩,這就是點陣字型檔文件。一般我們使用16*16的點陣宋體字型檔,所謂16*16,是每一個漢字在縱、橫各16點的區域內顯示的。不過後來又有了HZK12、HZK24,HZK32和HZK48字型檔及黑體、楷體和隸書字型檔。雖然漢字型檔種類繁多,但都是按照區位的順序排列的。前一個位元組為該漢字的區號,後一個位元組為該字的位號。每一個區記錄94個漢字,位號則為該字在該區中的位置。因此,漢字在漢字型檔中的具體位置計算公式為:94*(區號-1)+位號-1。減1是因為數組是以0為開始而區號位號是以1為開始的。這僅為以漢字為單位該漢字在漢字型檔中的位置,那麼,如何得到以位元組為單位得到該漢字在漢字型檔中的位置呢?只需乘上一個漢字字模佔用的位元組數即可,即:(94*(區號-1)+位號-1)*一個漢字字模佔用位元組數,而按每種漢字型檔的漢字大小不同又會得到不同的結果。以16*16點陣字型檔為例,計算公式則為:(94*(區號-1)+(位號-1))*32。漢字型檔文該從該位置起的32位元組信息即記錄了該字的字模信息。

☆點陣漢字的顯示

了解點陣漢字及漢字型檔的構成原理後,顯示漢字就變得簡單。以16*16點陣字型檔為例,通常的方法是:將文件工作指針移到需要的漢字字模處、將漢字型檔文件讀入一2*16數組再用for循環一位位地顯示。以使用VGAHI模式顯示「我」字為例,程序如下:
#include "graphics.h"
#include "stdio.h"
main()
{
int i=VGA,j=VGAHI,k;
unsigned char mat[16][2],chinease[3]="我";
FILE *HZK;
if((HZK=fopen("hzk16","rb"))==NULL)exit(0);
initgraph(&i,&j,"");
i=chinease[0]-0xa0;j=chinease[1]-0xa0; /*獲得區碼與位碼*/
fseek(HZK,(94*(i-1)+(j-1))*32l,SEEK_SET);
fread(mat,32,1,HZK);
for(j=0;j<16;j++)
for(i=0;i<2;i++)
for(k=0;k<8;k++)
if(mat[j][i]&(0x80>>k)) /*測試為1的位則顯示*/
putpixel(i*8+k,j,WHITE);

getch();
closegraph();
fclose(HZK);
}
怎麼樣?只要掌握了正確的方法,顯示漢字並不復雜。

☆列印字型檔文件和HZK12

如果你有UCDOS的HZK24S(宋體)、HZK24K(楷體)或HZK24H(黑體),你還可以使用不同字體的大字模漢字了。HZK24系列是24*24的點陣字型檔,每字模佔用3*24位元組。如果你按照HZK16的顯示方法的話,你會看到......呵呵,字被放倒了。這是因為該類字型檔與一般的漢字型檔不同,這類大字模漢字型檔是專供列印的列印字型檔,為了列印的方便將字模都放倒了,你使用時,只要將字模的位信息縱橫轉置顯示即可。例如你如果定義為mat[24][3]則應該這樣輸出:
for(i=0;i<24;i++)
for(j=0;j<24;j++)
if((0x80>>i%8)&mat[j][i/8]) /*轉置顯示*/
putpixel(j+x,y+i,color);
還有一類字型檔HZK12,雖然屬於標准字型檔類型,但如果你將它的字模當作12*12位計算的話,根本無法正常顯示漢字。因為字型檔設計者為了使用的方便,字摸每行的位數均補齊為8的整數倍,於是實際該字型檔的位長度是16*12,雖然每行都多出了4位,但這4位都是0(不顯示),並不影響顯示效果。

☆理論差不多了下面是我寫的一個實踐例子
/*
*TC下的漢字顯示演示程序
*LO幾又VE 22:58 2005-5-23
*將hzk16文件放至TC安裝目錄下
*hzk16文件下載地址
*下載字體文件
*/
#include <graphics.h>
#include <stdio.h>

#define MAXX 640 /*屏幕寬度 */
#define MAXY 480 /*屏幕高度 */
#define WIDTH 20 /*每一漢字寬度*/
#define HIGH 20 /*每一漢字高度*/

int priChi(unsigned char *); /*中文列印函數,傳入參數:中文數組指針 返回值 -1 異常 0 正常*/

int X=0; /*全局變數X Y控制中文列印格式*/
int Y=0;

int main()
{
char chinese[][60]={/*TC編譯器不支持長行 所以將中文字元串以二維形式存放*/
"我放棄清華計算機專業的保送資格而選擇參加高考的消息震撼了全校",
"從校長到班主任到各科目任課老師都找我談過話我有點驚異他們的變",
"化在我獲得全國信息大賽一等獎外加特別獎以前我似乎是個可有可無",
"的人物突然間變的如此的炙手可熱我覺得我的大腦前所未有的不夠用",
"說起這個特別獎還真的挺有意思雖然叫全國決賽但也無非是出幾個筆",
"試題再弄個上機程序編一下限時總共是三小時規定語言是西語言或者",
"派司卡在我花了半個小時分別用兩種語言把該程序完成後我覺得坐在",
"那實在是浪費我的大好青春於是我決定用匯編語言把它再寫一遍本來",
"我准備用微操作的十六進制碼寫的但考慮到時間問題只好放棄有人說",
"是金子總會發光此話誠不欺我啊正當我熱火朝天全心投入編程的時候",
"卻不知道自己已經被某人注意了很久了三小時之後我走出考場之後某",
"人趕緊抓住我很興奮的叫了一聲小朋友這聲小朋友直接導致我在數年",
"後還經常從噩夢中驚醒同時也是我拒絕清華邀請的直接導火索我們把",
"話題回到事發現場我在嚇了很大一跳後把頭轉了回來一個瘦干老頭正",
"抓著我的手兩眼放光的樣子還似乎是略帶深情的看著我我全身雞皮疙",
"瘩頓時爭先恐後的向外鑽我渾身一個機靈趕緊抖手老頭似乎感覺到了",
"異樣送開我的手略帶尷尬的道小朋友我自我介紹一下我是清華大學計",
"算機系的主任受邀到比賽的現場觀看順便看看有沒有什麼可挖掘的人",
"才那個你明白我的意思吧這句話很是影響清華學生理解力在我心目中",
"的地位你這意思不就是認為我是可挖掘的人才嗎我點了點頭老頭看我",
"能理解顯的很興奮然後開始滔滔不決的向我介紹清華計算機專業的實",
"力如何如何的雄厚在國內甚至國際是如何如何的有影響力最後滿懷深",
"情的看了我眼嚴肅的告訴我他將代表清華計算機專業歡迎我去他們那",
"念書我苦苦忍耐著他的飛濺唾沫委婉的表示這件事非同小可我必須回",
"家和父母商量一下然後逃也似的離開當然第一個去的地方是衛生間我",
"的臉啊誰知道老頭的唾沫會不會讓我的臉起老年斑回到學校的一個禮",
"拜後我就接到了清華正式邀請這個消息經我班主任的烏鴉嘴迅速在全",
"校蔓延而後又經過各種渠道迅速匯總到我父母耳朵"};

if(-1 == priChi(chinese))
{ /*列印異常*/
printf("Press any key to exit...");
fflush(stdin);
getch();
return 1;
}
return 0;
}

int priChi(unsigned char *chi)
{
unsigned char mat[16][2];
int i=VGA,j=VGAHI,k;
int sec,pot;
FILE *HZK;
if((HZK=fopen("hzk16","rb"))==NULL) /*打開字體庫文件*/
{
printf("Open style file (hzk16) failed!\n");
return -1;
}
initgraph(&i,&j,"");
while(*chi)
{
sec = *chi-0xa0; /*獲得區碼*/
pot = *(chi+1)-0xa0; /*獲得位碼*/
fseek(HZK,(94*(sec-1)+(pot-1))*32l,SEEK_SET);
fread(mat,32,1,HZK);
for(j=0;j<16;j++)
for(i=0;i<2;i++)
for(k=0;k<8;k++)
if(mat[j][i] & (0x80 >> k)) /*測試為1的位則顯示*/
putpixel(X+i*8+k,Y+j,WHITE);
X += WIDTH; /*下一字元的橫坐標*/
if(X >= MAXX)
{
X = 0;
Y += HIGH; /*下一字元的縱坐標*/
if(Y >= MAXY) /*滿一頁*/
{
printf("press any key to print other words");
getch();
system("cls"); /*清屏*/
Y = 0;
}
}

chi += 2; /*指針指向下一中文字元*/
}
getchar();
closegraph();
fclose(HZK);
return 0;
}

Ⅷ 為什麼keil c51v9.00保存新文件夾後,在編寫程序時 打漢字就是亂碼

這是 keil 對漢字編輯的bug ,解決辦法:

在程序中用漢字一定是定義字元串的,所以,先寫好聲明語句,打好一對大括弧,大括弧內打好一對雙引號,再把游標點到雙引號中,再輸入漢字就行了。

見下圖。

這樣可以輸入漢字,但很麻煩的。最好的辦法是用其它的文本編輯器軟體寫程序,網上找,很多的,那些編輯器軟體在輸入漢字時就沒有任何問題的,寫好程序後,只用keil編譯和模擬。

另外,在keil里,寫程序的確不方便。

熱點內容
sql性能監視器 發布:2024-04-25 08:21:48 瀏覽:832
吃雞ak配置什麼最好 發布:2024-04-25 08:15:46 瀏覽:447
firefox緩存目錄 發布:2024-04-25 08:00:31 瀏覽:940
我的世界國服怎麼免費弄伺服器 發布:2024-04-25 08:00:16 瀏覽:539
javaapi源碼 發布:2024-04-25 07:51:15 瀏覽:606
怎麼在伺服器執行jmeter腳本 發布:2024-04-25 07:35:25 瀏覽:397
域名訪問https 發布:2024-04-25 07:16:56 瀏覽:414
javaie亂碼 發布:2024-04-25 07:07:15 瀏覽:602
php開發微信支付 發布:2024-04-25 06:57:38 瀏覽:317
上傳視頻最快 發布:2024-04-25 06:42:59 瀏覽:14