在C語言中輸入中文字符串講解
C語言中的字符串是以ASCII碼表的形式存入的,輸入英文字符是以英文字符對(duì)應(yīng)的ASCII碼的形式進(jìn)入寄存器中的,例如輸出hello world!:
將c反匯編得到,


可以看到h的ASCII碼是68,e的ASCII碼是65等等存放進(jìn)內(nèi)存的,那中文字呢?中文字并沒有對(duì)應(yīng)的ASCII碼,還可以顯示出來嗎?

答案當(dāng)然是肯定的,在計(jì)算機(jī)中存儲(chǔ)中文使用的編碼規(guī)則是GB2312或GB2312-80,規(guī)定:一個(gè)小于127的字符的意義與原來相同,但兩個(gè)大于127的字符連在一起時(shí),就表示一個(gè)漢字,這樣我們就可以組合出大約7000多個(gè)簡(jiǎn)體漢字了。在這些編碼里,連在ASCII里本來就有的數(shù)字、標(biāo)點(diǎn)、字母都通通重新編了兩個(gè)字節(jié)長(zhǎng)的編碼,這就是常說的“全角”字符,而原來在127號(hào)以下的那些就叫“半角”字符。
將代碼反匯編看看,

這就是中文的存儲(chǔ)方法。
但這樣的話也是有弊端的,我們國(guó)家GB2312里的符號(hào)的意義可能和別的國(guó)家的不一樣,即兩國(guó)使用相同的數(shù)字代表不同的符號(hào),于是Unicode出現(xiàn)了,我就不說明Unicode的編碼方式了。
到此這篇關(guān)于在C語言中輸入中文字符串講解的文章就介紹到這了,更多相關(guān)C語言輸入中文字符串內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)二叉樹堆
這篇文章主要為大家介紹了C語言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)二叉樹堆的圖文示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
C語言實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
C++實(shí)現(xiàn)LeetCode(190.顛倒二進(jìn)制位)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(190.顛倒二進(jìn)制位),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
C語言實(shí)現(xiàn)兩個(gè)變量值交換的三種方式
兩個(gè)變量值的交換是編程中最常見的問題之一,以下將介紹三種變量的交換方式,其中第一種方式是最常用也是最實(shí)用的,后兩種方式一般只在特殊限制下使用,需要的朋友可以參考下2025-03-03
Linux中使用C語言實(shí)現(xiàn)基于UDP協(xié)議的Socket通信示例
這篇文章主要介紹了Linux中使用C語言實(shí)現(xiàn)基于UDP協(xié)議的socket通信示例,服務(wù)器端與客戶端的功能都非?;A(chǔ),需要的朋友可以參考下2016-03-03
c++網(wǎng)絡(luò)編程下Linux的epoll技術(shù)和Windows下的IOCP模型
c++ 網(wǎng)絡(luò)編程LINUX-epoll/windows-IOCP下socket opoll函數(shù)用法 優(yōu)于select方法的epoll 以及windows下IOCP 解決多進(jìn)程服務(wù)端創(chuàng)建進(jìn)程資源浪費(fèi)問題,感興趣的小伙伴一起來學(xué)習(xí)吧2021-08-08

