使用函数删除字符串中的字符
添加链接描述
注意:要消\n
法1:用同一数组修改
#include <stdio.h>
void delchar(char *str, char c);
int main()
{
int i, j, repeat;
char c, s[100];
scanf("%d ", &repeat);
for (i = 1; i <= repeat; i++)
{
getchar();//消\n (换行符号)
gets(s);
scanf("%c", &c);
delchar(s,c);
printf("result: %s\n", s);
}
}
void delchar(char *str, char c)
{
int i, j;
i = j = 0;
while (str[i] != '\0')
if (str[i] != c)
str[j++] = str[i];
i++;
}
str[j] = '\0';
}
法1:用同一指针修改
#include <stdio.h>
void delchar(char *str,char c);//它的功能是将字符串 str 中出现的所有 c 字符删除
int main()
{
int n=0,repeat;
char s[10][1000]={0},c1[10]={0};
scanf("%d",&repeat);
for(n=0;n<repeat;n++)//循环次数
{
getchar(); //消\n(换行符号)fflush(stdin)
gets(s[n]); c1[n]=getchar(); //或者scanf("%[^\n] %c",&s[n],&c1[n]);
}
for(n=0;n<repeat;n++) //循环次数
delchar(s[n],c1[n]);
return 0;
}
void delchar(char *str,char c)
{
char *p,*q;
for(p=str,q=str;*p != '\0';p++)
if(*p != c)
*q++ = *p;
*q = *p; //把后面的‘\0’赋给q,也是他本身;
printf("result: %s\n",str);
}
法2:用临时数组进行修改和储存,再复制到原函数
#include <stdio.h>
#include <string.h>
main(){
int repeat,i;
char ch[100],cx;
void delchar(char str[],char c);
scanf("%d",&repeat);
for(i=1;i<=repeat;i++){
scanf("%c",&cx);/*要吃掉回车字符*/
gets(ch);
scanf("%c",&cx);
delchar(ch,cx);
printf("result: %s\n",ch);
}
}
void delchar(char str[],char c){
char temp[100];/*临时数组,存放删除后的字符*/
int i,j=0;
for(i=0;str[i]!='\0';i++)
if(str[i]!=c){
temp[j]=str[i];
j++;
}
temp[j]='\0';
strcpy(str,temp); /*将删除后的字符放回原数组*/
}