C语言经典例32-删除字符串中指定的字符
生活随笔
收集整理的這篇文章主要介紹了
C语言经典例32-删除字符串中指定的字符
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 1 題目
- 2 分析
- 3 實(shí)現(xiàn)
- 4 運(yùn)行結(jié)果
1 題目
刪除一個(gè)字符串中的指定字母,如:字符串 “aca”,刪除其中的 a 字母。
2 分析
本題是要處理字符串,在C語言中,我們把他轉(zhuǎn)換為字符數(shù)組,則本質(zhì)是要處理數(shù)組,在數(shù)組中刪除某一元素的最簡單方法是設(shè)定一個(gè)標(biāo)記位point初始為0,它代表著當(dāng)前保存的非刪除字符的位置,而循環(huán)變量i則是要遍歷整個(gè)字符數(shù)組,在循環(huán)時(shí),若遇到刪除字符,則i向前進(jìn)(遞增),而point由于當(dāng)前不是有效字符,所以point不變,當(dāng)遇到有效字符時(shí),將該字符保存在point的位置,并且point向前進(jìn)(遞增),通過i和point以不同的規(guī)律遞增,從而找到出有效的字符并逐一覆蓋前面的要?jiǎng)h除的字符。
下面以簡單的圖示來描述這個(gè)算法,假設(shè)要?jiǎng)h除的字符為a:
注:該程序設(shè)計(jì)思想,在數(shù)組的題目中廣泛使用,需要熟練掌握
3 實(shí)現(xiàn)
#include <stdio.h> #include <string.h>void deleteChar(char a, char str[]) {int strLength = strlen(str); // 計(jì)算字符串的長度int point = 0; // 字符串位置標(biāo)號(hào),用于保存當(dāng)前有效字符位置for (int i = 0; i < strLength; i++) {if (str[i] == a) {continue; // 若當(dāng)前字符為要?jiǎng)h除的字符,則直接跳過繼續(xù)進(jìn)行循環(huán)} else {str[point] = str[i]; // 當(dāng)前字符為非刪除字符,則往前覆蓋point++; // 有效字符標(biāo)號(hào)位置遞增}}str[point] = '\0'; // 循環(huán)結(jié)束,最后一個(gè)字符為結(jié)束符 }int main(void) {char a; // 要?jiǎng)h除的字母char str[200]; // 保存字符串scanf("%s", str);deleteChar('a', str); // 這里把要?jiǎng)h除的字符寫死了,為`a`,你也可以換成輸入語句,自行輸入puts(str);return 0; }4 運(yùn)行結(jié)果
abcaabbcc bcbbcc總結(jié)
以上是生活随笔為你收集整理的C语言经典例32-删除字符串中指定的字符的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言经典例30-判断回文数
- 下一篇: C语言经典例35-字符串反转