1. 程式人生 > 其它 >C語言實現字串刪除字元函式

C語言實現字串刪除字元函式

技術標籤:字串c語言演算法

要求輸入一個字串內有若干個字元,再輸入一個字元,使得輸出字串中這一字元全部被刪除。

對於這個問題,我們考慮構造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'; }

執行結果:
在這裡插入圖片描述