面試常見的C語言字符串操作

2021-01-07 騰訊網

#字符串倒序輸出

實現邏輯,通過strlen獲取字符串長度,然後通過 len/2 進行交叉賦值,這裡需要注意,不需要考慮len是奇數還是偶數的問題。

如果len是奇數,最後一個字符就不需要倒序,如果是偶數,最後兩個字符就倒序。

程序輸出

#整型轉字符串

實現邏輯,每個整數看其轉換進位,從個位到十位百位都可以通過%操作加上/操作獲得,再用一個字符數組保存0-F。

用個位數對應值轉為字符,注意轉換出的字符串是反向的,還要考慮傳入的若是負數如何處理,再用翻轉字符串完成最後整個操作

下面這段代碼需要好好研究一下,最好自己運行試試。

程序輸出

#字符串複製

實現邏輯,逐個賦值直到遇到'\0'停止即可

程序輸出

#字符串比較

1、正常比較是否相同實現邏輯,判斷字符串長度是否相同,若相同逐個比較字符是否相同

程序輸出

2、忽略大小寫字符串比較

實現邏輯,在比較字符時可以將其統一轉換為大寫或小寫,然後再進行比對即可,和正常對比無其他不同

程序輸出

#memcpy函數實現

實現邏輯,主要就是逐個賦值即可完成

1、不考慮拷貝覆蓋問題

程序輸出

2、考慮拷貝覆蓋問題

拷貝覆蓋是我們在拷貝字符串的時候需要注意的一個問題,我下面的示例程序,使用第一個函數的時候,就出現了問題,使用第二個函數就沒有出現問題。

原因是,我們源字符串和目的字符串的地址都是一樣的,我們希望把字符串往後移動一個位置,但是實際上出現了問題。

程序輸出

針對上面的拷貝覆蓋問題,單獨寫了一個測試程序

程序輸出

初始的時候,dst指向 e 字符,str 指向h 字符,然後每次都是dst先移動,str再移動,就出現了dst被h字符所覆蓋。

好了,就這些內容,希望大家好好消化,這些代碼對面試很有幫助。

相關焦點

  • 常見的C語言字符串操作
    #整型轉字符串實現邏輯,每個整數看其轉換進位,從個位到十位百位都可以通過%操作加上/操作獲得,再用一個字符數組保存0-F。用個位數對應值轉為字符,注意轉換出的字符串是反向的,還要考慮傳入的若是負數如何處理,再用翻轉字符串完成最後整個操作下面這段代碼需要好好研究一下,最好自己運行試試。
  • C語言字符串操作總結
    1)字符串操作 strcpy(p, p1) 複製字符串 strncpy(p, p1, n) 複製指定長度字符串
  • C語言字符串詳解
    ,C語言中的字符串都以字符串常量的形式出現或存儲在字符數組中。同時,C 語言提供了一系列庫函數來對操作字符串,這些庫函數都包含在頭文件 string.h 中。一、字符串常量和字符數組1.1、什麼是字符串常量C 語言雖然沒有字符串類型,但是 C語言提是存在字符串這個概念的,也就是字符串常量:以 NUL 字節結尾的 0 個或多個字符組成的序列。
  • C語言 -- 字符串詳解
    ,C語言中的字符串都以字符串常量的形式出現或存儲在字符數組中。同時,C 語言提供了一系列庫函數來對操作字符串,這些庫函數都包含在頭文件 string.h 中。一、字符串常量和字符數組1.1、什麼是字符串常量C 語言雖然沒有字符串類型,但是 C語言提是存在字符串這個概念的,也就是字符串常量:以 NUL 字節結尾的 0 個或多個字符組成的序列。
  • 單片機c語言字符串操作
    請注意"直接對內存操作memset原型 void *memset(void *s, int ch, size_t n);char buffer[20];strcpy(buffer,"1234567890");memset(buffer,0,sizeof(char)*20);這時buffer中的數據全都是0了
  • c語言指針與字符數組
    我們所說的字符串就是字符數組的一種,就如我們常見的"hello world!",字符串的使用在C語言中也是非常重要的,常常會遇到一些操作,如字符串的修改、拷貝、字符串長度等,在物聯網的應用中也尤為突出,物聯網應用中所用的模組,大多是需要使用AT指令的,這就需要對字符串的操作。
  • R語言-stringr-字符串處理
    對大部分常規商業數據分析工作者的面對的表格數據而言,字符處理可能僅僅只是合併、剔除、刪除空格、倒敘等基礎操作。單雙引號R語言中字符串輸入時,可以使用單引號,也可以使用雙引號。要查看字符串的原始內容,可使用writeLines()或cat()x <- c("\"", "\\")x#> [1] "\"" "\\"writeLines(x)cat(char)#> "
  • C Sharp 基礎知識系列- 2 字符串
    String的常見方法String 變量的聲明方式C#中字符串常見的聲明有兩種:直接使用字面值 即String s = "12321";使用構造器,即String s = new String("12321");string 的特點String(字符串)在大多數開發語言中屬於不可變量,任何針對String
  • 正確操作C#字符串
    正確操作C#字符串本文是《編寫高質量代碼改善C#程序的157個建議》第一章基本語言要素之建議1正確操作字符串
  • c語言文件操作整理
    推薦《c陷阱與缺陷》FILE *fp;fp = fopen(file, "r+");編程者也許認為,程序一旦執行上述操作完畢,就可以自由地進行讀取和寫入的操作了。遺憾的是,事實總難遂人所願,為了保持與過去不能同時進行讀寫操作的程序的向下兼容性,一個輸入操作不能隨後直接緊跟輸出操作,反之亦然。
  • C語言字符串處理函數之字符串轉換、查詢函數
    介紹完字符串整體操作函數,就該到字符串查詢函數和字符串轉換函數了,至於一些字符串轉換函數,如atoi(),atof(),strtod(),strtol(),tolower(),toupper()等,以後有時間再整理整理。
  • 乾貨|C語言文件的基本操作!
    本文轉載自【微信公眾號:手機電腦雙黑客,ID:heikestudio】經微信公眾號授權轉載,如需轉載與原文作者聯繫c語言對文件的操作主要分為:按字符操作,按行操作,按內存塊操作主要的函數:fopen():FILE * fopen(_In_z_ const char * _Filename, _In_z_ const char
  • 【C語言更新】C語言中字符串的操作
    void  *memchr(const void *str, int c, size_t n)在參數 str 所指向的字符串的前  n 個字節中搜索第一次出現字符 c(一個無符號字符)的位置。int  memcmp(const void *str1, const void *str2, size_t n)把 str1 和 str2 的前  n 個字節進行比較。
  • c語言面試題----printf()的參數
    %d \n", a+b+c,(b = b*2), (c = c*2));      return 0; }本題解析答:輸出結果是:110..40..60這道題目來說的話,許多同學感覺無從下手,所以沒法回答。
  • 面試必備——常見的C語言字符串操作
  • Python程式語言:字符串和模塊time庫使用
    上一篇小編跟大家分享了Python程式語言的數字類型和用Python程式語言來計算我們每天進步的價值,這一篇小編跟大家分享我對字符串相關知識學習和time庫使用的相關知識!文章的結尾小編再送大家一個彩蛋!
  • Rust語言入門教程 字符串
    所有這些要素結合起來對於來自其他語言背景的程式設計師就可能顯得很困難了。在集合章節中討論字符串的原因是,字符串就是作為字節的集合外加一些方法實現的,當這些字節被解釋為文本時,這些方法提供了實用的功能。在這一部分,我們會講到 String 中那些任何集合類型都有的操作,比如創建、更新和讀取。
  • C語言strcmp和strcpy的用法
    如:"A"<"B" "a">"A" "computer">"compare"特別注意:strcmp(const char *s1,const char * s2)這裡面只能比較字符串,不能比較數字等其他形式的參數。二、c語言strcpy()用法C語言 strcpy() 函數用於對字符串進行複製(拷貝)。
  • 面試官:這次聊聊Python字符串駐留機制?
    每種程式語言為了表現出色,並且實現卓越的性能,都需要有大量編譯器級與解釋器級的優化。由於字符串是任何程式語言中不可或缺的一個部分,因此,如果有快速操作字符串的能力,就可以迅速地提高整體的性能。現代程式語言如 Java、Python、PHP、Ruby、Julia 等等,都支持字符串駐留,以使其編譯器和解釋器做到高性能。2、為什麼要駐留字符串? 字符串駐留提升了字符串比較的速度。
  • 華為算法面試經典題目,五種字符串操作算法,快來收藏
    上次和大家分享了我總結的一些基礎的華為算法面試題,今天我又整理了一份華為算法面試題中的字符串操作算法的題目和大家一起分享。喜歡的小夥伴趕緊收藏吧。在字符串操作算法中,屬於一個比較簡單一些的算法題。但是如果進行擴展的話,還是可以難倒一大部分人的。下面開始看題目。題目:編寫一個函數,計算字符串中含有的不同字符的個數。字符在ACSII碼範圍內(0~127),換行表示結束符,不算在字符裡。不在範圍內的不作統計。算法的Java實現代碼如下所示: