#include stdio.h
新宾ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
#include string.h
#include stdlib.h
#include strings.h
void rm(char *p ,char *q)
{ char *str=p,*c=p;
while (*p++!='\0')
{ if(*p==*q *(p+1)==*(q+1))
{ str=p;
p=p+2;
while(*p!='\0')
{*str=*p;
p++;
str++;
}
*str='\0';
p=c;
}
}
}
int main()
{
char buf[20],s[5];
gets(buf);
gets(s);
rm(buf,s);
printf("%s\n",buf);
}
扩展资料:
数组
如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。
指针
如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 *(此处特指单目运算符 * ,下同。C语言中另有 双目运算符 *) 则是取内容操作符,意思是取这个内存地址里存储的内容。
指针是 C 语言区别于其他同时代高级语言的主要特征之一。
指针不仅可以是变量的地址,还可以是数组、数组元素、函数的地址。通过指针作为形式参数可以在函数的调用过程得到一个以上的返回值,不同于return(z)这样的仅能得到一个返回值。
指针是一把双刃剑,许多操作可以通过指针自然的表达,但是不正确的或者过分的使用指针又会给程序带来大量潜在的错误。
字符串
C语言的字符串其实就是以'\0'字符结尾的char型数组,使用字符型并不需要引用库,但是使用字符串就需要C标准库里面的一些用于对字符串进行操作的函数。
它们不同于字符数组。使用这些函数需要引用头文件string.h。
参考资料来源:百度百科——C语言
下面函数在p1中删除p2中出现的任何字符。
void delall(char *p1, char *p2)
{
char *pNext, *p;
// NULL string is ignored.
if(NULL == p1 || NULL == p2)
return;
for(pNext=p1; *pNext; pNext++){
// Find current char in p2.
for(p=p2; *p; p++){
if(*pNext == *p){ // Skip char found in p2.
break;
}
}
// Append next char to result.
*p1 = *pNext;
// Increase result point when this char not found int p2.
if(!*p)
*p1 ++;
}
*p1 = 0;
}
删除串比较麻烦,删除一个子串后可能会在原字符串中构造出一个新的子串,所以处理起来不是太简单,比如输入字符串:abcdeddefeffghijklmn,从中删除def
如果不计较效率的话重新扫描那部分回退到p1开始就行了,更清晰点。
下面函数在p1中删除p2字符串。
void del(char *p1, char *p2)
{
char *p;
int len1, len2;
// NULL string is ignored.
if(NULL == p1 || NULL == p2)
return;
len1 = strlen(p1);
len2 = strlen(p2);
// p2 is not a substring of p1.
if(len2 len1)
return;
// Find p2 in p1.
for(p=p1; len1 = len2; p++, len1--){
if(strncmp(p, p2, len2) == 0){
memmove(p, (p+len2), (len1-len2));
*(p+(len1-len2)) = 0; // End of string.
// Rewind pointer to string start
// (memmove may construct a new string p2 in p1).
if((p - p1) len2){
p -= len2;
len1 += len2;
}else{
p = p1;
len1 = strlen(p1);
}
continue;
}
}
}
#includestdio.h
void fun(char *str) { char *p; int f[256],i;
for ( i=0;i256;i++ ) f[i]=0;
p=str;
while ( *p ) {
if ( f[*p]==0 ) { *str=*p; str++; }
f[*p]++;
p++;
}
*str=0;
}
void main() { char str[256];
gets(str); fun(str); printf("%s\n",str);
}
#include
stdio.h
#include
stdlib.h
void
DeleteString(char*
array,char*result,int
begin,int
len)//begin
开始删除的位置,len,删除的长度。
{
int
i=0,j=0;
while(array[i]!='\0')
{
if(i(begin-1)||i=(begin+len-1))
result[j++]=array[i++];
else
i++;
}
result[j]='\0';
}
int
main(void)
{
char
store[100];
char
result[100];
printf("please
input
string!\n");
scanf("%s",store);//scanf以空格来区分字符的结尾。
DeleteString(store,result,10,5);
printf("%s\n",result);
return
0;
}