c语言从字符串s中删除字符c:
#include<stdio.h>
/*从字符串S中删除字符c*/
voidsqueeze(char[],char);
intmain()
#include<stdio.h>
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\n",ch,s);
}
字符串在存储上类似字符数组
它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
以上内容参考:百度百科-字符串
可以正确运行,不过你要注意,输入只能输入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(s);i++)
if(s[i]!=c)
s[j++]=s[i];
s[j]='\0';
printf("%s",s);
}
int main(void)
{
int i;
char s[14]={0},c;
printf("请输入一串字符串\n");
//for(i=0;i<14;i++)
// scanf("%c",&s[i]);
gets(s);
printf("请输入要删去的字符\n");
scanf("%c",&c);
squeeze(s,c);
getch();
}
这样的话更有通用性: