C語言實現字串刪除字元函式
阿新 • • 發佈:2021-01-24
要求輸入一個字串內有若干個字元,再輸入一個字元,使得輸出字串中這一字元全部被刪除。
對於這個問題,我們考慮構造delete_me函式(delete是已定義過的函式不能再做變數名)來實現。我們首先想到的思路當然是使用兩個字串陣列,一個輸入原始字串,一個進行刪減處理後輸出,程式碼如下:
#include <stdio.h>
int main()
{
char a,str[100];
void delete_me(char str[],char ch);
printf("請輸入字串\n");
gets(str);
printf ("請輸入想刪除的字元\n");
scanf("%c",&a);
delete_me(str,a);
return 0;
}
void delete_me(char str[],char ch)
{
char dstr[100];
int i,j;
for(i=j=0;str[i]!='\0';i++)
{
if(str[i]!=ch){
dstr[j++]=str[i];
}
}
dstr[j]='\0';
printf("刪除後字串為:\n");
printf("%s\n", dstr);
}
這種方法固然由於引入dstr而變得很好理解,但是我們會發現dstr是一個區域性變數,輸出dstr只能放在函式中。由模組化思想,我們希望這個函式僅做資料處理,而輸出放在主函式中,這就要求我們只用一個數組進行處理。
優化如下:
#include <stdio.h>
int main()
{
char a,str[100];
void delete_me(char str[],char ch);
printf("請輸入字串\n");
gets(str);
printf("請輸入想刪除的字元\n");
scanf("%c" ,&a);
delete_me(str,a);
printf("刪除後字串為:\n");
printf("%s\n",str);
return 0;
}
void delete_me(char str[],char ch)
{
int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0';
}
執行結果: