C语言编程 自定义从字符串中删除指定的字符函数
#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
", argv[1]);
return 0;
}
运行结果:
扩展资料:return 0代表程序正常退出。return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。
return语句用来结束循环,或返回一个函数的值。
1、return 0,说明程序正常退出,返回到主程序继续往下执行。
2、return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已。
c语言从字符串s中删除字符c:
#include
/*从字符串S中删除字符c*/
voidsqueeze(char[],char);
intmain()
#include
gets(s);
printf("输入需要删除的指定字符ch:
");
ch=getchar();
for(i=j=0;s[i]!='\0';i++)
if(s[i]!=ch)s[j++]=s[i];
s[j]='\0';
printf("删除字符
%c
之后字符串为:
%s
",ch,s);
}
字符串在存储上类似字符数组
它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
以上内容参考:百度百科-字符串
{
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;
}
中叔毓凯特: char* remove_chars(char *str,const char *rmchars)//删除str中所有包含在rmchars中的字符 {char buff[256]={0};char *ps1,*ps2;ps1=(char *)rmchars;while(*ps1)buff[*ps1++]=1;//遍历rmchars,将要删除的字符对应在buff中的位置1ps2=str;while...
海宁市17231074944: C语言“在字符串中删除指定的字符”怎么编写程序? - ?
中叔毓凯特: 从字符数组中删除特定的字符,即输入要删除的指定字符,利用for循环找到非指定字符,将非指定字符输出即可.以下为具体的实现方法: #include<stdio.h> int main() { char str[100],c; int j,k; printf("please input a string:"); gets(str); printf("\...
海宁市17231074944: c语言,编写一个函数,指定字符串 删除给定字符 - ?
中叔毓凯特: #include<stdio.h> char ss[1000]; int delchar(char s[], char c){int i,t;for(i=0,t=0; i<1000; i++){if(s[i]==c) continue;ss[t++]=s[i];}ss[t]='\0';return t; }main(){char s[1000],c;scanf("%s %c",&s,&c);delchar(s,c);printf("%s",ss); }
海宁市17231074944: C语言 - 删除字符串中的字符. - ?
中叔毓凯特: c语言中书写删除字符串中某个字符的程序的具体操作步骤如下: 1、编写头函数,包括“#include <stdio.h>.”与“#include <string.h>.“. 2、定义两个相同容量的字符串储存的变量 char a【100】; char b【100】.以及整数变量 int c;int i=0,j...
海宁市17231074944: 用c语言编程实现“有一个字符串,今输入一个字符,将字符串中该字符删掉” - ?
中叔毓凯特: #include void Delete( char a[] , int n , char del ) { int i,j; for( i = 0 ; i{ if(a[i]==del) { for(j = i ; j{ a[j] = a[j+1]; } i--; } } } int main() { char s[10000],c; while( gets(s) ) { c = getchar(); Delete( s, strlen(s) , c ); puts(s); gets(s); } return 0; }
海宁市17231074944: c语言程序中 从字符串s中删除指定的字符c. - ?
中叔毓凯特: 可以正确运行,不过你要注意,输入只能输入13个字符,不然就错的,而且只能删一个字符, 因为你写的有点小问题: 修改一下: #include <conio.h> #include<stdio.h> #include<string.h> void squeeze(char s[],char c) {int i=0,j=0;for(i;i<strlen...
海宁市17231074944: C语言字符串中删除指定字符 - ?
中叔毓凯特: //在你的原程序上修改,注意加注释的地方 #include#include //这个头文件可以不用了 void deletechar(char *s,char c) //delete是保留字,改名为deletechar {int i,j; for(i=0;s[i]!='\0';) {if(s[i]==c) //只是两个字符的比较,不需要strcmp函数for(j=i;s[j]!='\0';...
海宁市17231074944: C语言删除字符串中的指定字符 - ?
中叔毓凯特: for(j=i;p[j];j++)p[j]=p[j+1]; 后面加上一句 i--;
海宁市17231074944: c语言,编写一个函数,指定字符串 删除给定字符 - ?
中叔毓凯特: #include char ss[1000];int delchar(char s[], char c){ int i,t; for(i=0,t=0; i<1000; i++){ if(s[i]==c) continue; ss[t++]=s[i]; } s...
海宁市17231074944: c语言:从字符串s中删除字符c - ?
中叔毓凯特: #include<stdio.h> void main() { char str[256],str1[20],c; int i,j; gets(str); gets(str1); c=str1[0]; i=j=0; while ( str[i]!=0 ) { if ( str[i]!=' ' ) { str[j]=str[i]; j++; } i++;} printf("%s\n",str); }