日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言经典例32-删除字符串中指定的字符

發(fā)布時(shí)間:2025/6/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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:

  • 起初i和point(為簡單起見,下面都用p)都指向數(shù)組的第一個(gè)位置
  • 在判斷后發(fā)現(xiàn)i位置的字符就是a,則進(jìn)行下一輪循環(huán),i遞增,p不動(dòng)
  • 在判斷后發(fā)現(xiàn)i位置的字符不是a,則將i位置的b,賦值給p位置,然后i和p都遞增,這樣的話,原來要?jiǎng)h除的a就被后面的字符“覆蓋”掉了,循環(huán)結(jié)束后相當(dāng)于字符串中的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)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。