c语言编写一个程序,实现查找一个字符串中的特定字符,并将其删除. 一个c语言编程题,从字符串中删除特定字符
\u7528C\u8bed\u8a00\u7f16\u5199\u4e00\u4e2a\u7a0b\u5e8f\uff08\u8f93\u5165\u4e00\u6bb5\u5b57\u7b26\u4e32\uff0c\u5e76\u8bbe\u5b9a\u4e00\u4e2a\u5b57\u6bcd\uff0c\u5982\u679c\u5b57\u7b26\u4e32\u4e2d\u6709\u8fd9\u4e2a\u5b57\u6bcd\uff0c\u5c31\u628a\u8fd9\u4e2a\u5b57\u6bcd\u5220\u9664\uff09#include "stdio.h"
#define MaxLen 256
main()
{
char ch;
char str[MaxLen];
memset(str,0,sizeof(str));
printf("\u8f93\u5165\u5b57\u7b26\u4e32\n");
scanf("%s",str);
printf("\u8f93\u5165\u5220\u9664\u5b57\u7b26\n");
scanf("%c",&ch);
int len = strlen(str);
int cur = 0;
for( int i=0;i<len;i++)
{
if( ch==str[i] ) continue;
str[cur]=str[i];
cur++;
}
str[cur]='\0';
printf("str=%s\n",str);
getch();
}
\u4f60\u7684\u4ee3\u7801\u4e2d *(--s)=*(++s);\u8fd9\u53e5\u6709\u95ee\u9898\uff0c\u8fd9\u53e5\u6267\u884c\u987a\u5e8f\u662f\u5148\u6267\u884c\u4e24\u8fb9\u7684\u81ea\u52a0\u548c\u81ea\u51cf\u64cd\u4f5c\uff0c\u6700\u540e\u518d\u6267\u884c\u8d4b\u503c\uff0c\u6240\u4ee5\u5b9e\u9645\u4e0a\u662f\u628a\u81ea\u5df1\u7684\u503c\u8d4b\u7ed9\u4e86\u81ea\u5df1\uff0c\u6240\u4ee5\u5b57\u7b26\u4e32\u6beb\u65e0\u53d8\u5316\uff0c\u6539\u6210*(s) = *(s+1);\u5c31\u597d\u4e86\uff0c\u5176\u4ed6\u8bed\u53e5\u4e0d\u7528\u52a8\u3002
一、算法描述
逐个比较字符串source中的字符,若当前i位置的字符等于待删除字符ch,则i+1..len-1之间的子串整体前移;如此反复,直到所有待删除字符都找到并被删除为止。
二、操作过程
三、参考程序
#include <stdio.h>
#include <string.h>
/* 移除字符串source中的所有ch字符 */
void remove(char *source, char ch);
void main()
{
char source[1000];
char ch;
printf("请输入一个字符串:");
gets(source);
printf("请输入待删除字符:");
ch = getchar();
remove(source, ch);
printf("新的字符串:");
puts(source);
}
/* 移除字符串source中的所有ch字符 */
void remove(char *source, char ch)
{
int i, j;
int len = strlen(source);
for(i=0; source[i]!='\0'; i++)
{
if(source[i] == ch)
{
for(j=i+1; source[j]!='\0'; j++)
{
source[j-1] = source[j];
}
source[j-1] = '\0';
}
}
}
四、运行测试
请输入一个字符串:How are you?
请输入待删除字符:o
新的字符串:Hw are yu?
挑出其中需要的字符存回来就行了
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
void delChar(char *str,char m)
{
int len=strlen(str);
int i,j=0;
char *p=(char *)malloc(len*sizeof(char));
memset(p,0,len);
for(i=0;i<len;i++)
{
if(*(str+i)!=m)
*(p+j++)=*(str+i);
}
memset(str,0,len);
strncpy(str,p,strlen(p));
free(p);
}
int main()
{
char str[100]={0};
char del;
scanf("%s %c",str,&del);
delChar(str,del);
puts(str);
}
结果:
char chr[5] = "abccd";
char chr1[1] = "c";
int j=0;
for(int i =0;i<5;i++)
{
if(chr[i]=="c")
j++;//先算出有几个符合的
}
char chrNew[j];
int m=0;
for(int k =0 ; k<5;k++)
{
if(chr[k]!="c")
chrNew[m] = chr[k];
m++;
}
此时获得的chrNew就是新的删除之后的字符串了
基本类型中不支持删除操作,所以实际上就是一个新的字符串。
#include<stdio.h>
#include<string.h>
main()
{char a[80];
int i,j,pos,y;
char ch;
while(true)
{
printf("请输入一行字符串:\n");
gets(a);
printf("请输入要删去的字符:\n",ch);
scanf("%c",&ch);
for(i=0;i<strlen(a);i++)
if(a[i]==ch)
{ pos=i;
a[pos]=' ';
}
for(j=pos;j<strlen(a)-1;j++)
a[j]=a[j+1];
a[strlen(a)-1]='\0';
printf("%s\n",a);
printf("退出输入0,继续输入1:\n");
scanf("%d",&y);
if(y==1)
scanf("%c",&ch);
if(y==0)
break;
}
这个比较简单,先strchr查找下,然后memmov就可以了
绛旓細include <stdio.h> include <math.h> int main(){ int a[5];int i;int flag = 0;float sum = 0,aver;float min ;printf("input 5 numbers:");for(i = 0; i < 5; i++){ scanf("%d",&a[i]);sum = sum+a[i];} aver = sum/5;min = fabs(a[0]-aver);for(i = 0...
绛旓細include<stdio.h>int main(){ int nums[3][3]={{8,9,3},{6,5,4},{2,1,9}}; int i,j,cloSum[3]={0},rowSum[3]={0},*min=&nums[0][0]; double rowAve[3],cloAve[3]; printf("鍘熸暟缁勶細\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++...
绛旓細/*鐢╟璇█缂栧啓绋嬪簭 杈撳叆涓涓姝f暣鏁皀锛屾眰1鍒皀鐨勬暟涓1鍑虹幇鐨勪釜鏁*/ include"stdio.h"int count(int n){ int i,j,c=0;for(i=1;i<=n;i++){ j=i;while(j!=0){ if(i%10==1) /*鍒ゆ柇浣嶆暟涓槸鍚︽湁1*/ { c++;} j=j/10; /*璁╂暟闄や互鍗佽浠栧師鏉ョ殑楂樹綅鍙樹负浣庝綅锛屽嵆鍘熸潵鐨勫崄浣...
绛旓細include<stdio.h> include<string.h> main( ){ char str[1000];char prv;int i,length,have=0;gets(str);length=strlen(str);prv=str[0];for(i=1;i<length;++i){ if(prv==str[i]) have=1;prv=str[i];} if(have) printf("yes\n");else printf("no\n");getch();} ...
绛旓細} main(){ int number; /*淇濆瓨浜烘暟鐨勫彉閲*/ stud *head; /*head鏄繚瀛樺崟閾捐〃鐨勮〃澶寸粨鐐瑰湴鍧鐨勬寚閽*/ number=n;head=creat(number); /*鎶婃墍鏂板缓鐨勫崟閾捐〃琛ㄥご鍦板潃璧嬬粰head*/ } 杩欐牱灏鍐濂戒簡涓涓鍙互寤虹珛鍖呭惈n涓汉濮撳悕鐨勫崟閾捐〃浜嗐傚啓鍔ㄦ佸唴瀛樺垎閰嶇殑绋嬪簭搴旀敞鎰忥紝璇峰敖閲忓鍒嗛厤鏄惁鎴愬姛杩涜妫娴嬨
绛旓細include<stdio.h> include<stdlib.h> intmain(void){ chars[10];//濮撳悕 intnum;//瀛﹀彿 printf("璇疯緭鍏ュ鍚嶏細\n");gets(s);printf("璇疯緭瀛﹀彿锛歕n");scanf("%d",&num);printf("濮撳悕鏄細%s\n瀛﹀彿鏄細%d\n",s,num);system("pause");return0;} ...
绛旓細閲囩撼鐜:42% 鏉ヨ嚜:鑺濋夯鍥 鎿呴暱: C/C++ 浜掕仈缃 甯歌杞欢 PHP 鏁版嵁缁撴瀯鍙婄畻娉 鍏朵粬鍥炵瓟 浣犵殑绋嬪簭瑕佹眰鏈変袱涓,绗涓涓鎺掑簭,绗簩涓煡鎵,鎵浠ヤ綘缁撳悎杩欎袱涓畻娉曞氨鑳芥悶瀹氫簡銆傚嵆鍏堝杈撳叆鐨勬暟鎹繘琛屾帓搴,鍥犱负浣犳棤娉曚繚璇佽緭鍏ョ殑瀛︾敓鎴愮哗閮芥槸鏈夐『搴忕殑,鎵浠ュ厛瑕佹帓搴,鐒跺悗灏辨槸鏌ユ壘浜,鍙互閲囩敤浜屽垎娉鏌ユ壘,瀹炵幇绠鍗曚篃姣旇緝蹇竴浜...
绛旓細浠g爜濡備笅锛/*鐢╟璇█閾捐〃缂栧啓涓涓瀛︾敓淇℃伅绯荤粺绋嬪簭锛瑕佹眰杈撳嚭瀛︾敓鐨勫鍙凤紝濮撳悕锛屾у埆锛屽鍙凤紝濮撳悕锛屾垚缁(瀹炵幇娣诲姞锛屽垹闄わ紝鏌ヨ,鎺掑簭锛屽钩鍧)*/ include <stdio.h> include <iostream> include <string.h> include <stdlib.h> using namespace std;const int n=5;/ nodeEntry : 鑺傜偣鏁版嵁绫诲瀷 nodeADT...
绛旓細浣跨敤VC涓嬬殑MFC椤圭洰閲岀殑API鈥淔indFile鈥濅互鍙娾淢oveFile"鍙互杞绘澗瀹炵幇浣犵殑闇姹傘侳indFile鐢ㄤ簬鏌ユ壘鏂囦欢锛岃孧oveFile鍒欑敤浜庣Щ鍔ㄦ枃浠讹紝浠g爜濡備笅锛//ext鏄绉诲姩鐨勬枃浠舵墿灞曞悕锛屽锛"exe"//dir鏄绉诲姩鐨勭洰鏍囩洰褰曡矾寰勶紝濡傦細"D:\\DestDir"void MoveFileByExt(const CString& ext, const CString& dir){ CSt...
绛旓細婧愮▼搴浠g爜濡備笅锛歩nclude "pch.h"define _CRT_SECURE_NO_WARNINGS//VS鐜涓嬮渶瑕侊紝VC涓嶉渶瑕 include<stdio.h> int main(){ char c = 0;//瀹氫箟杈撳叆瀛楃鍙橀噺 int num_count = 0;//鏁板瓧涓暟 int bigalp_count = 0;//澶у啓瀛楁瘝涓暟 int littlealp_count = 0;//灏忓啓瀛楁瘝涓暟 int emp_count...