本文目錄一覽:
在C語言中處理字元的幾種常用方法?
基本上兩種:字元數組和字元指針。字元數組名是常量,字元指針是變數
1、用字元數組:一個一維字元數組存儲一個字元串,二維數組存儲多個字元串。如:
int i;
char s1[]=”abc”,s2[][80]={“ABCD”,”XYZ”},s3[80];
scanf(“%s”,s3);
printf(“%s,%s\n”,s1,s3);
for(i=0;i2;i++)printf(“%s\n”,s2[i]);
2、用字元指針:字元指針指向一個字元串,字元指針數組處理多個字元串。如:
int i;
char *p1=”abc”,*p2[]={“ABCD”,”XYZ”},**p;
printf(“%s\n”,p1);
for(i=0;i2;i++)printf(“%s\n”,p2[i]);
p=p2;
for(i=0;i2;i++)printf(“%s\n”,*p++);
3、字元數組與字元指針配合一起使用:字元數組提供字元串的存儲,處理字元串用字元指針
char s[80],*p;
p=s;
scanf(“%s”,p);
printf(“%s”,p);
在string.h中所有處理字元串函數,對字元數組和字元指針都適用。
C語言字元串操作函數
strupr:將字元串s轉換為大寫形式
strlwr:將字元串s轉換為小寫形式
以上兩個沒說的!
●strlen功能:返回字元串s的長度,不包括串結束字元’\0′,也不是數組長度;
如下幾種方式:
1)strlen(“china”) 結果為5
2)char s[20]=”china”;
strlen(s) 結果為5
3)char *s=”china”;
strlen(s) 結果為5
●strcpy(字元串1,字元串2): 把字元串2中的所有內容,複製到字元串1中,不管字元串1中原先存放的是什麼,全部被覆蓋(要注意的是s1的長度要足夠容納s2)
●strcat(字元串1,字元串2): 將兩個字元串連接,形成一個新的字元串(要注意的是s1的長度要足夠容納s1和s2,只能字元串和字元串連接,不能直接和整型,float,double等連接,不過可以加上雙引號” “,使之變成字元型)
如下:
#includestdio.h
#includestring.h
void main()
{
char a[100];
char b[100];
strcpy(a,”我愛-“);
strcpy(b,”-美女”);
strcat(a,b);
puts(a); /*輸出:我愛–美女*/
}
●strcmp比較字元串的大小,但不是比較s1和s2的長度,而是比較對應字元串中的ASCII碼的大小
如下:
char s1[10]=”china”;
char s2[10]=”chz”;
strcmp(s1,s2); //返回一個負數,即s1s2。雖然s1的長度大於s2,但比較的是ASCII碼
C語言中如何編寫一個字元串複製函數,並在主函數中調用它。
#includestdio.h
char *custom_cpy(char *to,char *from);
int main(int argc,char *argv[]){
char *from = “i like c langanger”;
char to[30];
char *ptr = custom_cpy(to,from);
printf(“%s,%s\n”,ptr,to);
return 0;
}
char *custom_cpy(char *to,char *from){
if(to == NULL || from == NULL){
return NULL;
}
char *p = to;
for(;*from!=’\0′;from++,to++){
*to = *from;
}
*to = ‘\0’;//拷貝完畢之後一定要加一個結束符號
return p;
}
擴展資料:
字元串相關函數應用:
1. 連接運算 concat(s1,s2,s3…sn) 相當於s1+s2+s3+…+sn。
例:concat(『11』,’aa』)=’11aa』;
2. 求子串。 Copy(s,I,I) 從字元串s中截取第I個字元開始後的長度為l的子串。
例:copy(『abdag』,2,3)=』bda』;
3. 刪除子串。過程 Delete(s,I,l) 從字元串s中刪除第I個字元開始後的長度為l的子串。
例:s:=』abcde』;delete(s,2,3);結果s:=』ae』;
4. 插入子串。 過程Insert(s1,s2,I) 把s1插入到s2的第I個位置
例:s:=abc;insert(『12』,s,2);結果s:=』a12bc』;
5. 求字元串長度 length(s) 例:length(『12abc』)=5;
參考資料:
百度百科-字元串
c語言字元串處理函數的英文原名?
函數名: strrchr
功 能: 在串中查找指定字元的最後一個出現
用 法: char *strrchr(char *str, char c);
舉例:
[cpp] view plain copy
char fullname=”./lib/lib1.so”;
char *ptr;
ptr = strrchr(fullname,’/’);
printf(“filename is %s”,++ptr);
//運行結果:filename is lib1.so
函數名: strchr
功 能: 在串中查找指定字元的第一個出現
用 法: char *strchr(char *str, char c);
舉例:
[cpp] view plain copy
char fullname=”./lib/lib1.so”;
char *ptr;
ptr = strrchr(fullname,’.’);
printf(“after strchr() is %s”,++ptr);
//運行結果:after strchr() is /lib/lib1.so
函數名: strtok
功 能: 在串中查找指定字元的第一個出現
用 法: char *strtok(char *s, char *delim);
說明:
1.strtok函數的實質上的處理是,strtok在s中查找包含在delim中的字元並用NULL(』/0′)來替換,直到找遍整個字元串。這句話有兩層含義:(1)每次調用strtok函數只能獲得一個分割單位。(2)要獲得所有的分割單元必須反覆調用strtok函數。
2.strtok函數以後的調用時的需用NULL來替換s.
3.形參s(要分割的字元串)對應的變數應用char s[]=」….」形式,而不能用char *s=」….」形式。
舉例:
[cpp] view plain copy
void main()
{
char buf[]=」Golden Global View」;
char* token = strtok( buf, 」 「);
while( token != NULL )
{
printf( 」%s 「, token );
token = strtok( NULL, 」 「);
}
return 0;
}
/*其結果為:
Golden
Global
View
*/
C語言字元串處理函數
strcpy(p+strlen(q),r);表示從數組首地址偏移strlen(q),也就是從元素d所在的位置開始複製
這時複製完後數組p的長度為3+5=8(元素d被覆蓋)
strcat(p,q);表示從數組p的尾部進行連接,這時數組p的長度為8+3=11
而數組p在定義為char p[20],即請求連續開闢20個char類型存儲單元,而每個char佔一位元組,所以sizeof(p)等於20
還有問題嗎
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/309694.html