C语言编程 自定义从字符串中删除指定的字符函数 c语言程序中 从字符串s中删除指定的字符c.
C\u8bed\u8a00\u7f16\u7a0b\uff1a\u5728\u4e00\u4e2a\u6307\u5b9a\u7684 \u5b57\u7b26\u4e32\u4e2d\u5220\u9664\u6307\u5b9a\u7684 \u5b57\u7b26\uff0c\u5e76\u8f93\u51fa\u8be5\u5b57\u7b26\u4e32\u3002#include
#include
int main(int argc, char **argv)
{
int num = 0;
for (int i = 0; i <= strlen(argv[1]); i++)
if (argv[1][i] != argv[2][0])
{
argv[1][num] = (i == strlen(argv[1])) ? '\0' : argv[1][i];
num++;
}
printf("%s\n", argv[1]);
return 0;
}
\u8fd0\u884c\u7ed3\u679c\uff1a
\u6269\u5c55\u8d44\u6599\uff1areturn 0\u4ee3\u8868\u7a0b\u5e8f\u6b63\u5e38\u9000\u51fa\u3002return\u662fC++\u9884\u5b9a\u4e49\u7684\u8bed\u53e5\uff0c\u5b83\u63d0\u4f9b\u4e86\u7ec8\u6b62\u51fd\u6570\u6267\u884c\u7684\u4e00\u79cd\u65b9\u5f0f\u3002\u5f53return\u8bed\u53e5\u63d0\u4f9b\u4e86\u4e00\u4e2a\u503c\u65f6\uff0c\u8fd9\u4e2a\u503c\u5c31\u6210\u4e3a\u51fd\u6570\u7684\u8fd4\u56de\u503c\u3002
return\u8bed\u53e5\u7528\u6765\u7ed3\u675f\u5faa\u73af\uff0c\u6216\u8fd4\u56de\u4e00\u4e2a\u51fd\u6570\u7684\u503c\u3002
1\u3001return 0\uff0c\u8bf4\u660e\u7a0b\u5e8f\u6b63\u5e38\u9000\u51fa\uff0c\u8fd4\u56de\u5230\u4e3b\u7a0b\u5e8f\u7ee7\u7eed\u5f80\u4e0b\u6267\u884c\u3002
2\u3001return 1\uff0c\u8bf4\u660e\u7a0b\u5e8f\u5f02\u5e38\u9000\u51fa\uff0c\u8fd4\u56de\u4e3b\u8c03\u51fd\u6570\u6765\u5904\u7406\uff0c\u7ee7\u7eed\u5f80\u4e0b\u6267\u884c\u3002return 0\u6216return 1\u5bf9\u7a0b\u5e8f\u6267\u884c\u7684\u987a\u5e8f\u6ca1\u6709\u5f71\u54cd\uff0c\u53ea\u662f\u5927\u5bb6\u4e60\u60ef\u4e8e\u4f7f\u7528return(0)\u9000\u51fa\u5b50\u7a0b\u5e8f\u800c\u5df2\u3002
c\u8bed\u8a00\u4ece\u5b57\u7b26\u4e32s\u4e2d\u5220\u9664\u5b57\u7b26c\uff1a
#include
/*\u4ece\u5b57\u7b26\u4e32S\u4e2d\u5220\u9664\u5b57\u7b26c*/
voidsqueeze(char[],char);
intmain()
#include
gets(s);
printf("\u8f93\u5165\u9700\u8981\u5220\u9664\u7684\u6307\u5b9a\u5b57\u7b26ch:
");
ch=getchar();
for(i=j=0;s[i]!='\0';i++)
if(s[i]!=ch)s[j++]=s[i];
s[j]='\0';
printf("\u5220\u9664\u5b57\u7b26
%c
\u4e4b\u540e\u5b57\u7b26\u4e32\u4e3a:
%s\n",ch,s);
}
\u5b57\u7b26\u4e32\u5728\u5b58\u50a8\u4e0a\u7c7b\u4f3c\u5b57\u7b26\u6570\u7ec4
\u5b83\u6bcf\u4e00\u4f4d\u5355\u4e2a\u5143\u7d20\u90fd\u662f\u80fd\u63d0\u53d6\u7684\uff0c\u5b57\u7b26\u4e32\u7684\u96f6\u4f4d\u662f\u5b83\u7684\u957f\u5ea6\uff0c\u5982s[0]=10\uff0c\u8fd9\u63d0\u4f9b\u7ed9\u6211\u4eec\u5f88\u591a\u65b9\u4fbf\uff0c\u4f8b\u5982\u9ad8\u7cbe\u5ea6\u8fd0\u7b97\u65f6\u6bcf\u4e00\u4f4d\u90fd\u80fd\u8f6c\u5316\u4e3a\u6570\u5b57\u5b58\u5165\u6570\u7ec4\u3002
\u901a\u5e38\u4ee5\u4e32\u7684\u6574\u4f53\u4f5c\u4e3a\u64cd\u4f5c\u5bf9\u8c61\uff0c\u5982\uff1a\u5728\u4e32\u4e2d\u67e5\u627e\u67d0\u4e2a\u5b50\u4e32\u3001\u6c42\u53d6\u4e00\u4e2a\u5b50\u4e32\u3001\u5728\u4e32\u7684\u67d0\u4e2a\u4f4d\u7f6e\u4e0a\u63d2\u5165\u4e00\u4e2a\u5b50\u4e32\u4ee5\u53ca\u5220\u9664\u4e00\u4e2a\u5b50\u4e32\u7b49\u3002\u4e24\u4e2a\u5b57\u7b26\u4e32\u76f8\u7b49\u7684\u5145\u8981\u6761\u4ef6\u662f\uff1a\u957f\u5ea6\u76f8\u7b49\uff0c\u5e76\u4e14\u5404\u4e2a\u5bf9\u5e94\u4f4d\u7f6e\u4e0a\u7684\u5b57\u7b26\u90fd\u76f8\u7b49\u3002\u8bbep\u3001q\u662f\u4e24\u4e2a\u4e32\uff0c\u6c42q\u5728p\u4e2d\u9996\u6b21\u51fa\u73b0\u7684\u4f4d\u7f6e\u7684\u8fd0\u7b97\u53eb\u505a\u6a21\u5f0f\u5339\u914d\u3002\u4e32\u7684\u4e24\u79cd\u6700\u57fa\u672c\u7684\u5b58\u50a8\u65b9\u5f0f\u662f\u987a\u5e8f\u5b58\u50a8\u65b9\u5f0f\u548c\u94fe\u63a5\u5b58\u50a8\u65b9\u5f0f\u3002
\u4ee5\u4e0a\u5185\u5bb9\u53c2\u8003\uff1a\u767e\u5ea6\u767e\u79d1-\u5b57\u7b26\u4e32
{
char buff[256]={0};
char *ps1,*ps2;
ps1=(char *)rmchars;
while(*ps1)
buff[*ps1++]=1;//遍历rmchars,将要删除的字符对应在buff中的位置1
ps2=str;
while(*ps2)//遍历str,将要删除的字符置为1
{
if(1==buff[*ps2])
*ps2=1;
ps2++;
}
ps1=str;
ps2=str;
while(0!=*ps1)//调整str中字符位置,删除所有置为1的位
{
if(1!=*ps1)
{
ps1++;
continue;
}
ps2=ps1+1;
while(0!=*ps2 && 1==*ps2)
ps2++;
if(0==*ps2)
break;
*ps1++=*ps2;
*ps2=1;
}
*ps1=0;
return str;
}
一楼的:
只能删除第一个字符,而且后面的写法是错误的。
二楼的:
没有释放内存,也是只能删除相同的一个字符。
void fun(char[] &str,char &a)
{
int n,i,c=0;
for(n=0;str[n]!='\0';n++)
{
if(str[n]==a) break;
c=1
}
for(i=n;str[i+1]!='\0';i++){str[i]='\0';}
}
说明:str[]为目标字符串,a为指定字符。
char * DelString(char * oldString,char toDel)
{
int iold = 0,inew = 0;
int oldlen = strlen(oldString);
char * newStr = (char *)malloc(sizeof(char)*oldlen);
for(iold = inew = 0;iold<oldlen;iold++)
{
if(oldString[iold] != toDel)
{
newStr[inew] = oldString[iold];
inew++;
}
}
newStr[inew] = '\0';
return newStr;
}
char
*
DelString(char
*
oldString,char
toDel)
{
int
iold
=
0,inew
=
0;
int
oldlen
=
strlen(oldString);
char
*
newStr
=
(char
*)malloc(sizeof(char)*oldlen);
for(iold
=
inew
=
0;iold<oldlen;iold++)
{
if(oldString[iold]
!=
toDel)
{
newStr[inew]
=
oldString[iold];
inew++;
}
}
newStr[inew]
=
'\0';
return
newStr;
}
扩展阅读:c++入门程序代码 ... c语言搜题神器app ... c++新手代码大全 ... 截取字符串的三种方法 ... c++编程跳动爱心代码 ... c #根据符号分割字符串 ... c语言字符串声明 ... cnc编程必背50个程序 ... c语言截取字符串的某一段 ...