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