當前位置:首頁 » 編程軟體 » c編譯教程中文

c編譯教程中文

發布時間: 2022-08-16 12:17:46

c語言怎麼編譯

在本機上搭建IDE開發環境,在IDE中導入編譯器,就可以本地編譯了。
把代碼在本地寫好,編譯過之後,運行樣例沒問題後,再上傳的網站上,網站上是有編譯器的,你選擇之後會自動編譯。

❷ 用c語言編譯執行時輸入英文,結果顯示中文是為什麼

我認為是代碼的問題。
我用的也是vc6,中文綠色版,Win7,64位的系統。從來沒出現由於軟體不兼容導致程序停止運行的問題。
用該VC6.0編過小程序,也編過一個程序幾千行的代碼,有出現過某某.exe已停止工作的問題。
從來都是代碼的問題。
有可能是讀寫了非法內存。有可能是控制項(比如窗口之類的),信號之類的。
中文版本並不妨事兒,沒有中文路徑就和英文的一樣了。

❸ C中如何處理漢字,請詳細給我講講啊,急啊!!

以前收藏的一份文檔,很不錯的:)

學習過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年的干支為:己卯

❹ C語言編譯原理

編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。

1、預處理階段:

主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)

2、匯編階段:

插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。

3、編譯階段:

將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。

4、鏈接階段:

在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。

❺ 怎樣用c語言編譯

C編譯的整個過程很復雜,大致可以分為以下四個階段:

  1. 預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。

  2. 編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。

  3. 匯編階段將匯編語言翻譯成機器指令。

  4. 鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。

❻ C語言怎麼編譯才能顯示中文

主要還是看你的編譯器是否支持了。
我用dev-cpp,覺得不錯。你試試。

❼ 如何在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語言編譯的高手進來指點下!本人初學習C語言.沒基礎.前幾天從網上買回一本C++Primer中文版...

中文版的 C++ 大學教程,電子工業出版社,【美】H.M.Deitel 【美】 P.J.Deitel

這本書很適合初學者,大部分學校軟院現在都用這本當教材了。以前用的 C++ Primer,它比較適合當第二本來讀。

熱點內容
怎麼下載壓縮包 發布:2024-05-19 04:47:47 瀏覽:9
二嫂水仙ftp 發布:2024-05-19 04:47:42 瀏覽:160
雲隙伺服器下載 發布:2024-05-19 04:33:22 瀏覽:315
德國C語言 發布:2024-05-19 04:13:40 瀏覽:963
音頻管理器沒有文件夾 發布:2024-05-19 04:13:36 瀏覽:667
qq郵箱埠993伺服器怎麼填 發布:2024-05-19 04:07:05 瀏覽:204
javaapi框架 發布:2024-05-19 04:06:59 瀏覽:363
與存儲結構無關的術語 發布:2024-05-19 04:05:41 瀏覽:500
編譯路由器固件選擇 發布:2024-05-19 03:56:28 瀏覽:42
手機f加密 發布:2024-05-19 03:28:47 瀏覽:225