首页
/
每日頭條
/
科技
/
c語言字符串的基本用法
c語言字符串的基本用法
更新时间:2026-07-31 08:40:05

C語言字符串作為一種數據類型,是最為常用的一種操作對象,它的用法和基本類型int、char、double等不太一樣,常用的操作也不是 、-、*和/等操作符,而是諸如合并兩個字符串為一個新的字符串、将一個字符串删除首部或尾部指定數目的字符、将一個字符串按照指定次數進行合并以及分割字符串為等長的字符串操作,這些操作可以說是與整型的操作符類似,但含義有所改變,下面我們就學習如何實現這幾個常用的功能。

在開始學習以上4個字符串操作之前,首先介紹兩個重要的概念,一個是逐個字符依次訪問字符串,另一個是字符串長度。

逐個地訪問字符串中的字符,就是從字符串的起始地址開始,每次将訪問的地址向後移動一個單元,我們可以通過一個指針的遞增操作符實現,這樣就可以訪問到新的地址,之後通過指針間接操作符*,就可以訪問這個地址所存儲的字符了。例如,将指針p指向字符串s的第一個位置,p = s,我們就可以使用*p訪問字符串變量s的第一個字符;之後将指針向後移動一位,即指針p遞增操作,p ,再通過*p訪問的内容就是s字符串中的第2個位置的字符,依次類推,就可以訪問字符串中的每一個字符,直到遇到字符串終止符’\0’為止。

字符串的長度,以ASCII字符編碼為例,是指這個字符串中所有字符的個數總和。比如:字符串”Live or die?”的長度為12,字符串長度包括引号内的所有字符,當然也包括空格字符和符号字符,如上例中的的兩個空格和一個問号字符。我們該如何計算字符串的長度值呢?長度值的計算是通過起始點和終止點,對于字符串來說,就是字符串的起始地址和終止地址,起始地址表示為字符數組的變量名稱,終止地址就是特殊字符’\0’所在的地址。如下面的字符串:

c語言字符串的基本用法(.字符串基本操作之一)1

圖1

我們就可以從第一個字符L開始計數,之後向後移動一個位置,每次移動一個位置,字符的個數加1,直到遇到最後一個字符’\0’為止(’\0’不計入字符串的長度),代碼可以這樣編寫:

c語言字符串的基本用法(.字符串基本操作之一)2

圖2

圖2中第6行代碼将指針的值設置為字符數組變量s,即将指針變量p指向了字符串的起始地址,之後将字符串長度計數變量count初始化為0,之後每次遞增一個位置,count的值就增1。第8-11行使用了一個循環語句,這個語句的循環終止條件為*p == ‘\0’,即當前的字符為’\0’,如果*p值為其它字母,那麼将一直執行代碼第9、10行代碼,第9行代碼遞增count的值,第10行遞增指針p的值,如果遇到了特殊字符’\0’,那麼while循環語句就停止執行,count變量中就記錄下字符的個數,即計算出這個字符串的長度。

字符串拼接功能,是指将兩個字符串a和b中的字符進行拼接,形成一個新的字符串c。比如:a字符串内容為”abc”,b字符串的内容為”def”,執行字符串拼接後形成的新字符串為”abcdef“。下圖3實現了字符串拼接功能,拼接字符串時,原字符串a和b中的數據保持不變,将拼接後的字符串存放至新的位置,字符數組c變量為這個位置的起始地址,需要注意的是:字符數組c所占用的空間大小一定不小于字符串a和b的長度之和再加1(用以存儲字符串終止符’\0’)。

c語言字符串的基本用法(.字符串基本操作之一)3

圖3

在圖3的代碼中,第19-21行,定義了三個指針,分别指向三個數組a,b和c的首地址,代碼第23-27行實現将字符串a中的字符逐個複制到數組c中,代碼采用的是通過指針逐個訪問字符串a中的字符,并對c數組中的對應位置進行賦值,每次複制一個字符到c數組中;采用同樣的方法,代碼第29-33行,實現對字符串b中的字符依次複制到數組c中,當前的指針pc在完成對字符串a的複制操作後,位置停留在第4個位置,這樣在進行對b字符串進行逐個訪問時,新的字符便會追加到已包含a數組數據的c數組的最後。完成對字符串a和b的複制操作後,第35行代碼執行了一個賦值操作,将數組c的最後一位設置為’\0’值,即構造稱為一個字符串。第37行代碼輸出了表示a和b字符串合并後的結果。

删除一個字符串首部指定個數的字符是指将一個字符串的最左端的從現有字符串移除,如源字符串”abc efg hijk lmn”,删除首部4個字符後,新的字符串變為了”efg hijk lmn”。如何進行操作呢?我們隻需要将第4個位置後的所有字符依次向前移動4個位置就可以。

c語言字符串的基本用法(.字符串基本操作之一)4

圖4

圖4代碼中,第41行将指針ps指向第5個元素’e’所對應的地址,第42行代碼将指針ps0執行原字符串的首地址。通過第43-47行代碼中的循環語句,依次将第5個位置之後的代碼前移4個位置,即’e’移至0位置,‘f’移至1位置,‘g’移至2位置……,最後将’n’移至11位置,代碼第44行實現此功能,第45行代碼是将新字符串的指針向後移動一個位置,第46行代碼是将舊字符串的指針向後移動一個位置,即兩個指針始終保持距離為4的偏移,最終實現移動所有字符。第49行代碼是将字符出終止符添加到末尾,形成一個新的字符串。這樣就完成了從起始位置删除4個字符的功能。

如何删除字符串尾部指定數目的字符呢?見《字符串基本操作之二》

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
闆繪有什麼推薦的新手闆子(想入坑電繪怎麼選工具)
闆繪有什麼推薦的新手闆子(想入坑電繪怎麼選工具)
  事先聲明:   1.沒有收取任何廣告費用   2.購買工具前請認真思考好再做決定,如果經濟可觀最好一開始就買比較好的(不是要求一定要頂配)因為這些工具會陪伴你很長一段時間。   3.不要拿消費來替代自己的努力   以下建議僅供參考。   手繪了一段時間後,應該會有很多人想要嘗試電繪,但是又不知怎麼選擇工具,接下來我會根據不同的情況來推薦工具。   數位闆...
2026-07-31
四川國際大數據大會(四川省大數據白皮書出爐)
四川國際大數據大會(四川省大數據白皮書出爐)
  今日,四川大數據大視頻大智能産業峰會暨第四屆光纖寬帶和iPTV節在中國電信西部信息中心舉行。      四川電信大數據應用優勢明顯   四川大數據産業聯合會在峰會上發布了《四川省大數據産業發展白皮書》。白皮書指出。白皮書顯示,四川是名副其實的數據大省。據統計,四川數據總量以每年超過40%的速度爆炸性增長,大數據已在我省各級黨政機關和通信、金融、交通、醫療...
2026-07-31
nasa中微子脈沖實驗(NASA新構型亞聲速X驗證機系統進展分析)
nasa中微子脈沖實驗(NASA新構型亞聲速X驗證機系統進展分析)
                 攀登   近日,NASA分别授予4家公司(極光飛行科學公司、波音公司、洛克希德·馬丁公司和Dzyne技術公司)研究合同,要求提出其各自建議的超高效亞聲速運輸機(UEST)大尺寸飛行驗證機的系統需求,這标志着NASA亞聲速超高效X驗證機計劃正加速進入實施階段。   UEST項目背景   2016年初,NASA公布了新航空地平線...
2026-07-31
忘不了餐廳高清完整版(忘不了餐廳2全集免費)
忘不了餐廳高清完整版(忘不了餐廳2全集免費)
        店長團花招百出逗樂老人,《忘不了餐廳》初顯治愈能力   陳赫的到來給忘不了家族帶來的持續不斷的歡樂,本期專屬陳赫的整蠱計劃再度上線,沒想到黃渤宋祖兒聯手整蠱卻以失敗告終,但整蠱不是目的,逗樂餐廳裡的老寶貝們才是關鍵,   四人有趣的互動也成了老人們的快樂源泉,在所有人的努力下,忘不了家族的關系愈發融洽,老人們的狀态也越來越好,在複盤會上,老人...
2026-07-31
win10如何删除系統自帶沒用軟件(系統自帶的不一定好)
win10如何删除系統自帶沒用軟件(系統自帶的不一定好)
  技巧 | 最炫酷實用的應用方式   Windows10系統的一些自帶應用,例如電話、拍照、地圖等,在台式機上都用不到,這些應用不但占用磁盤空間,而且還長期駐留系統占用内存,毫無意義。如何才可以删除系統自帶的無用功能(應用)呢?      通過PowerShell命令可以删除系統自帶的功能應用,但是這個操作對于普通用戶來說比較難,因此我們推薦使用知名的垃圾...
2026-07-31
Copyright 2023-2026 - www.tftnews.com All Rights Reserved