C 字串基本操作

2021-08-31 16:23:01 字數 2794 閱讀 8018

在 c 語言中,字串是由數字、字母、下劃線組成的一維字元陣列,並且使用 null 字元 '\0' 作為終止符號。

字串在儲存上類似字元陣列,所以它每一位的單個元素都是可以提取的,如s=「abcdefg」,則s[0]=「a」,s[1]="b"。

字元實際上是以對應的ascii數值的形式在記憶體中儲存的。 對乙個字元強制轉換成int型別,得到的就是該字元的ascii碼。

字元與字元相減,其實就是它們對應的ascii碼相減,得到的是它們的ascii碼之間相差的距離。

函式返回字串的兩個條件1. 返回乙個字串位址(首位址), 2. 保證這塊位址的記憶體空間不會隨著函式退出而銷毀

將字串指標作為函式引數傳入,並返回該指標

使用malloc申請的堆空間,返回申請的堆位址,注意釋放

返回乙個static定義的靜態區域性變數

使用全域性變數

1.  將字串指標作為函式引數傳入,並返回該指標

char* strcpy(char* des,const char* source)

2. 使用malloc函式動態分配記憶體,函式可以返回該記憶體位址

malloc申請的記憶體位於堆上,不會被系統自動釋放掉,可以從函式中返回,但是切記要在主調函式中使用free主動釋放該空間。 

#include

#include

#include

char * return_pchar_malloc()

int main()

3. 返回乙個靜態區域性變數

使用static修飾的靜態變數存放位置是在全域性資料區,在主程式執行的整個生命週期中都存在,不會隨著函式的退出而銷毀。

#include

#include

#include

char * return_pchar_static()

int main()

4. 使用全域性變數

全域性變數是老大,沒啥說的。

那麼可否在函式中返回乙個常量字串指標?如下:

#include

#include

#include

char* return_pstr()

int main()

答案是可以的,但也是危險的!

字元常量位於靜態資料區里的文字常量區,生命週期是整個函式,但是字元常量是唯讀的,任何嘗試修改字元常量的操作都會導致執行錯誤。

#include#include#include//數字轉換成字串

void itoa(int num,char* str)

str[i]='\0';

length = strlen(str);

//字元逆序,注意終止條件是長度的一半

for(int j=0;j#include#include//實現兩個字串複製

char* strcpy_(char* strs, char* strt)

while((*temp++=*strs++)!='\0');

return strt; //返回的是字串首位址

}int main()

#include#include#include//字串迴圈移動n位

char* strcir(char* str, int n)

temp[move]=str[i];

}temp[length]='\0';

return temp; //返回的是字串首位址}

int main()

如給定字串「this is a sentence」,轉換成"sentence a is this"。

#include#include#include//反轉區間字串

void reverse_str(char* left, char* right)

char* s0, *s1;

int amount = 0;

while(*str!='\0')

if(*s1=='\0')

str++;

}return amount;

}int main()

#include#include#include//首個匹配字串的起始位置

int position(char* str,int n, char *str_son,int n_son)

if(n<=0||n_son<=0||n_son>n)

int i=0;

for(;i

給定字串a和b,輸出a和b中的最大公共子串。比如a="aocdfe" b="pmcdfa" 則輸出"cdf"

#include#include#include//兩個字串的最大公共字串(重要)

char* max_sub_str(char* str1,int str1_l, char* str2, int str2_l)

p_str_help=0;

}

}free(max_sub_help);

return max_sub;

}

int main()

C 字串基本操作

一 知乎總結 1 string類介紹 2 容器操作 3 修改 4 查詢 5 比較 二 常用操作 c風格字串 c風格字串初始化 c風格字串常見操作 string類 string類初始化 string類常見操作 char greeting hello 字串初始化用雙引號,字元初始化用單引號 cout s...

C風格字串基本操作

與字串相關的基本操作包括strlen,strcpy,strcat,strcmp,strchr,strspn,strcspn,strpbrk,strstr,strtok等。在有些平台上,strcpy等使用較多的操作可能直接使用彙編 編寫,本文採用c語言來編寫這些函式,然後說說與其相關的一些內容。str...

C 字串及基本操作

string類 ps 更多資料結構知識詳見 常見陣列結構與演算法 char greeting hello 字串初始化用雙引號,字元初始化用單引號 coutstrcpy s1,s2 strcat s1,s2 strlen s1 返回s1的長度 不加 0 sizeof s1 返回字串陣列大小 strcm...