C C 學習筆記筆記28 字元與字串

2021-06-23 08:39:05 字數 3088 閱讀 5858

字串是資料結構中相對簡單的一種資料結構。

關於字串的基本知識:

1:字元與字串

字元常量:字元常量是用單撇號括起來的乙個字元

《常見的控制字元也是一種特殊形式的字元常量,以\開頭的字串行,在螢幕上不能顯示的》

2:字元與字串的儲存

1)字元

將乙個字元常量放到乙個字元變數中,實際上並不是把該字元本身放到記憶體單元中去,而是將該字元相應的ascii碼存放到儲存單元中。

在記憶體中,字元資料以ascii碼儲存,它的儲存形式就與整數的儲存形式類似。這樣字元型資料與整型資料之間可以通用。

所以乙個字元資料既可以以字元形式輸出,也可以以整數形式輸出。——運用的其實就是ascii碼

關於字元的問題,在做輸出的時候,可以輸出字元型別的,也可以輸出整型的。這二者通用。另有乙個常見的問題就是大小寫轉換的問題,還有就是在資料結構中模式匹配的問題。這在接下來會依次**:

e.g.1:大小寫字元轉換

#include void main()

是因為大小寫在ascii碼表中相差32個單位。所以用小寫的儲存減去32就可以得到大寫的。

2)字串

字串常量是一對雙撇號括起來的字串行。

c語言規定:在每個字串常量的結尾加乙個"字元結束標識",以便判斷字串結束。以'\0'作為字串結束標誌。所以如果說是「china」的字串,它其實是佔6個字元,而不是5個字元。

2:整數與字串之間的轉換

e.g.1怎麼將整數轉化為字串,並且不用函式itoa?

分析:itoa函式如何使用?

itoa函式是取整數輸入值,並將其轉換為相應數字的字串。

函式原型:char *itoa(int value,char *string,int radix);

原型說明:

value:表示欲轉換的資料

string:目標字串的位址

radix:轉換後的進製數,可以是16進製制,10進製等。

運用:

#include ;

#include int main(void)

如果不用itoa函式又該如何轉換?

方法:整數轉換為字串,可以採用加'0',在逆序的方法,整數加'0'就會**的轉換為char型別的數。

運用:

#include #include int main(void)

temp[i]=0;

printf("temp=%s\n",temp);

i=i-1;

printf("temp=%d\n",i); //剛剛轉換的字串是逆序的,必須把它反轉過來

while (i>=0)

str[j]=0;

printf("string =%s\n",str);

return 0;

}

e.g2:字串又是如何轉換成整數的?

分析:字串轉換成整數,可以採用減'0'再乘以10累加的方法。字串減'0'就會轉化為整型資料。

運用:

#include #include int main(void)

,str[7];

while(temp[i])

printf("sum=%d\n",sum);

return 0;

}

針對上面的問題有個疑問,為什麼加上'\0'就可以辨別字元與整型的區別呢?

對於這個問題還得分析下'\0'這個東西,'\0'代表ascii碼為0的字元,ascii碼為0的字元不是乙個顯示的字元,而是乙個「空操作符」,即它什麼也不做。用它來作為字串結束標誌不會產生附加的操作或增加有效字元,只是起到乙個供辨別的標誌。

補充:c語言標準庫下的字串函式

先約定如下:s、t分別表示(char*)型別的引數,cs、ct表示(const char *)型別的引數,它們都表示字串。

n表示size_t型別的引數,c是整型引數。

常見的字串函式有:

size_t strlen(cs); //求出cs的長度

char *strcpy(s,ct);//把ct複製到s中去

char *strncpy(s,n,ct);//把ct中的n個字元複製到s中去

char *strcat(s,ct);//把ct複製到s字串之後

char *strncat(s,n,ct);//複製ct中的n個字元到s中去

int strcmp(cs,ct);//比較cs與ct的大小,分別返回正值、0、負值

int strncmp(cs,n,ct);//比較cs和ct的大小,最多比較n個字元

char *strchr(cs,c);//在cs中查詢第乙個c出現的位置,並用指向這個位置的指標表示,如果沒有則返回null;

char *strrchr(cs,c);//在cs中查詢最後乙個c出現的位置

size_t strspn(cs,ct);//在cs中查詢全部由ct裡字元組成的序列,並返回其長度

size_t strcspn(cs,ct);//在cs中查詢全部由非ct裡字元組成的序列,並返回其長度

char *strpbrk(cs,ct);//在cs裡查詢ct裡的字元,返回第乙個滿足條件的字元出現的位置,沒有時返回null

char *strstr(cs,ct);//在cs中查尋串ct(查詢子串),返回ct作為cs的子串的第乙個出現的位置,ct未出現在cs裡時返回null

char *strerror(n);//返回與錯誤編號n相關的錯誤資訊串(指向該錯誤資訊串的指標)

char *strtok(s,ct); //在s中查尋由ct中的字元作為分隔符而形成的單詞

C C 學習筆記32 字串操作與字元子串問題

前面給出了很多關於對於字元 字串的問題。關於字串與字元子串的處理問題有很多是可以研究的。之前的總結大致有 字元與字串的區別 字元與字串的處理函式 資料結構中的關於串的知識點 資料結構中關於字串的模式匹配問題,大致上有兩個演算法 樸素的模式匹配演算法和kmp模式匹配的演算法。字元與字串的區別 字元與字...

C C 學習筆記29 字串處理函式

常見的字串處理函式有 size t strlen cs 求出cs的長度gets str puts str char strcpy s,ct 把ct複製到s中去 char strncpy s,ct,n 把ct中的n個字元複製到s中去char strcat s,ct 把ct複製到s字串之後 char s...

json字串(記筆記)

import json books result json.dumps books,ensure ascii false 將python物件轉為json物件 ensure ascii false 的作用 因為ascii碼不支援中文,加個這個就可以顯示中文 print result print typ...