国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在C程序中處理漢字

2019-11-17 05:28:43
字體:
來源:轉載
供稿:網友

  學習過C語言的人也許有時會碰到這樣一個問題:如何用變量存儲漢字以及對這些變量進行操作。目前許多C語言參考書中都沒涉及到這個問題,程序中多為處理英文變量和英文字符串,涉及到漢字的情況也大都是在PRintf語句中輸出提示信息或結果,如:

printf("請輸入a,b的值:/n");
printf("輸出功率為%s千瓦。/n",power);

   考慮到還有相當一部分人在學習和應用C語言,因此在這里向讀者介紹一下筆者在這方面摸索出來的經驗。

   存儲漢字應該用字符數組,這一點是肯定的,要害問題是漢字在你的計算機系統上占幾個字節。多數人會認為一個漢字肯定占兩個字節,其實不然。漢字到底占幾個字節,這是隨系統不同而不同的,而且還依靠于軟件環境,如Visual Basic中漢字占一個字節。可以在你的計算機上用strlen()函數測試一下,如:

printf("%d",strlen("計算機"));

   若輸出為6,則每個漢字占兩個字節;若輸出12,則每個漢字占四個字節。大多數系統是每個漢字占兩個字節的,即上述語句輸出值為6。應當注重的是一個全角字符(包括標點符號)同漢字占據相同的字節。本文假定每個漢字占兩個字節。

   這樣你就可以用字符數組存儲漢字了,但別忘了,由于C語言中字符串是以'/0'作為結束標記的,系統會自動加上這個標記符,而用strlen()函數測試的返回值不包括這個'/0',因此在定義和初始化字符數組時應當使數組長度最小為實際字符串長再加1,如:

static char name[7]="孫悟空"; /*數組長度為7說明最多可存放3個漢字*/

   假如把數組長度定義為6,系統在編譯時并不報錯,但是當運行程序時有時會莫名其妙地重復輸出或多輸出漢字,假如出現這種情況,應當首先考慮數組長度是否有問題。當然在定義的同時初始化可以省略數組長度,如:

static char array[]={"中國計算機軟件專業技術水平考試"};

   同樣可以定義二維數組,下面這個二維數組可以存放10個人名:

char member[10][8]; /*10個元素,每個元素中最多能放3個漢字(不是4個!)*/

   因為二維數組member[10][8]可以看成非凡的一維數組member[0],member[1],…,member[9],這些一維數組分別表示各行,而一行就表示了一個人名,因此假如想操作每個人名,只需寫成member[0],member[1],…而不寫成member[0][8],member[1][8],…。

   順便提一下,在C編譯窗口中輸入漢字需要中文環境。假如讀者用的是DOS操作系統,那么就需要安裝CCDOS或UCDOS;假如是WIN95/98操作系統,則在DOS命令窗口中運行下面這個批處理文件即可,而不必另外安裝中文DOS系統:

C:/WINDOWS>PDOS95

   在C編輯窗口中用Ctrl+空格鍵啟動WIN95中文輸入法。另外由于C程序是基于DOS的,因此編輯、編譯C程序最好在全屏幕狀態,否則輕易出現問題。

   下面給出一個實例程序,它的功能是計算出輸入年份的天干地支。

#include "string.h"
main()
{
int a,b,year;
char gz[6]; /*用來表示干支的字符變量*/
/*注重:下面兩個語句中{}內的引號和逗號不能為全角字符*/
static char tg[10][3]={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
static char dz[12][3]={"子","丑","寅","卯","辰","巳","午","未","申","酉","戍","亥"};
printf("請輸入一個年份:");
scanf("%d",&year);
a=(year-1804)%10; /*以1804年為參考年份,1804年是甲子年*/
b=(year-1804)%12;
strcpy(gz,tg[a]);
strcat(gz,dz[b]);
printf("%d年的干支為:%s/n",year,gz);

}

   運行結果:
請輸入一個年份:1999
1999年的干支為:己卯

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霸州市| 晋中市| 南华县| 海晏县| 顺昌县| 义乌市| 临汾市| 陆川县| 博湖县| 交口县| 类乌齐县| 江油市| 延边| 昌江| 纳雍县| 申扎县| 洪雅县| 镇原县| 大姚县| 博野县| 噶尔县| 平山县| 漯河市| 民和| 平和县| 手游| 永善县| 壶关县| 启东市| 姜堰市| 九龙城区| 新绛县| 朝阳区| 上林县| 宁陵县| 临西县| 木兰县| 安陆市| 浮山县| 山丹县| 霍林郭勒市|