字串在C語言裡使用非常多,因為很多資料處理都是文字,也就是字串,特別是裝置互動、web網頁互動返回的幾乎都是文字資料。
字串本身屬於字元陣列、只不過和字元陣列區別是,字串結尾有’\0’。 字串因為規定結尾有'\0'
,在計算長度、拷貝、查詢、拼接操作都很方便。
char buff[]="我是一個字串"; char a[]="1234567890"; char b[]="abc"; char c[]={'a','b','c','\0'};
在普通的字元陣列結尾加一個 \0
就變成了字串。
將字串裡所有大寫字母全部換成小寫字母。或者小寫字母全部換成大寫字母。可以通過形參進行區分。
#include <stdio.h> #include <string.h> #include <stdlib.h> void func(char *str,int flag); int main() { char buff[100]; printf("從鍵盤上輸入字串:"); scanf("%s",buff); printf("源字串:%s\n",buff); func(buff,0); printf("大寫轉換小寫:%s\n",buff); func(buff,1); printf("小寫轉大寫:%s\n",buff); return 0; } //函數功能: 大寫小寫轉換 //flag=0表示大寫轉換小寫 =1表示小寫轉大寫 void func(char *str,int flag) { int data; while(*str!='\0') { if(flag) { if(*str>='a'&& *str<='z') //小寫 { *str=*str-32; } } else { if(*str>='A'&& *str<='Z') //小寫 { *str=*str+32; } } str++; } }
#include <stdio.h> int main() { char str1[100]; char str2[100]; int i=0; /*1. 錄入資料*/ printf("輸入字串1:"); scanf("%s",str1); printf("輸入字串2:"); scanf("%s",str2); /*2. 比較字串*/ while(str1[i]!='\0'||str2[i]!='\0') { if(str1[i]!=str2[i])break; i++; } if(str1[i]=='\0'&&str2[i]=='\0') { printf("字串相等.\n"); } else { printf("字串不相等.\n"); } return 0; }
#include <stdio.h> #include <string.h> int main() { char str1[100]; int len=0; int i,j; int tmp; printf("輸入要排序的字串:"); scanf("%s",str1); len=strlen(str1); //開始排序 for(i=0;i<len-1;i++) { for(j=0;j<len-1-i;j++) { if(str1[j]>str1[j+1]) { tmp=str1[j]; str1[j]=str1[j+1]; str1[j+1]=tmp; } } } printf("排序之後的字串:%s\n",str1); return 0; }
#include <stdio.h> #include <string.h> int main() { //"123" char str[100]; int data=0; int i=0; printf("從鍵盤上輸入字串:"); scanf("%s",str); while(str[i]!='\0') { data*=10;//data=0 data=10 data=120 data+=str[i]-'0';//data=1 data=12 data=123 i++; } printf("data=%d\n",data); return 0; }
從鍵盤上錄入一個字串,刪除字串裡指定的單詞,輸出結果。
比如:原字串 」akjbcds123dfjvbf123fdvbfd123」
刪除單詞:「123」
輸出的結果:」akjbcdsdfjvbffdvbfd」
#include <stdio.h> #include <string.h> int main() { char str1[100]; char str2[100]; int i=0,j=0; int str2_len=0; /*1. 錄入資料*/ printf("輸入源字串:"); scanf("%s",str1); printf("輸入要刪除的字串:"); scanf("%s",str2); /*2. 計算要刪除字串的長度*/ str2_len=strlen(str2); /*3. 查詢字串*/ for(i=0;str1[i]!='\0';i++) { //比較字串 for(j=0;str2[j]!='\0';j++) { if(str1[i+j]!=str2[j])break; } if(str2[j]=='\0') { //4. 刪除字串---後面向前面覆蓋 for(j=i;str1[j]!='\0';j++) { str1[j]=str1[j+str2_len]; } str1[j]='\0'; i--; } } //5. 輸出結果 printf("str1=%s\n",str1); return 0; }
從鍵盤上錄入一個字串,從指定位置插入一個字串,再輸出結果。
比如:原字串「1234567890」
(1). 從指定位置插入新的單詞。 比如 從第2個下標插入一個「ABC」字串。
結果: 「123ABC4567890」
#include <stdio.h> #include <string.h> int main() { char str1[100]; char str2[100]; int addr=0; int str1_len; int str2_len; int i; /*1. 錄入資料*/ printf("錄入源字串:"); scanf("%s",str1); printf("錄入要插入的字串:"); scanf("%s",str2); printf("輸入要插入的下標位置:"); scanf("%d",&addr); str1_len=strlen(str1); //3 str2_len=strlen(str2); //2 /*2. 完成插入*/ //完成資料移動 for(i=str1_len-1;i>=addr;i--) { str1[i+str2_len]=str1[i]; } //資料替換 for(i=0;i<str2_len;i++) { str1[i+addr]=str2[i]; } str1[str1_len+str2_len]='\0'; /*3. 輸出資料*/ printf("str1=%s\n",str1); return 0; }
從鍵盤上錄入一個字串,將指定單詞替換成想要的單詞。
比如:原字串「123jfvfdj123dkfvbfdvdf」
想要將「123」替換成「888」或者「8888」或者「88」
#include <stdio.h> #include <string.h> int main() { char str1[100]; char str2[100]; char str3[100]; int str1_len=0; int str2_len=0; int str3_len=0; int i,j; int cnt=0; /*1.準備資料*/ printf("輸入源字串:"); scanf("%s",str1); printf("輸入查詢的字串:"); scanf("%s",str2); printf("輸入替換的字串:"); scanf("%s",str3); /*2. 計算長度*/ str1_len=strlen(str1); str2_len=strlen(str2); str3_len=strlen(str3); /*3. 字串替換*/ for(i=0;i<str1_len;i++) { //查詢字串 for(j=0;j<str2_len;j++) { if(str1[i+j]!=str2[j])break; } //如果查詢成功就進行替換 if(j==str2_len) { //總長度變短了 if(str2_len>str3_len) { cnt=str2_len-str3_len; //差值 //完成資料向前移動--覆蓋 for(j=i+str2_len-cnt;j<str1_len;j++) { str1[j]=str1[j+cnt]; } str1[str1_len-cnt]='\0'; } //總長度變長了 else if(str2_len<str3_len) { cnt=str3_len-str2_len; //差值 //完成資料向後移動 for(j=str1_len;j>=i+str2_len;j--) { str1[j+cnt]=str1[j]; } str1[str1_len+cnt]='\0'; } //替換 for(j=0;j<str3_len;j++) { str1[i+j]=str3[j]; } //重新計算長度 str1_len=strlen(str1); } } /*4. 完成字串列印*/ printf("str1=%s\n",str1); return 0; }
相關推薦:《C視訊教學》
以上就是一文聊聊C語言中的字串操作(大小寫轉換、比較、排序等)的詳細內容,更多請關注TW511.COM其它相關文章!