重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
方法一:
创新互联-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、西部信息中心、等保安全、私有云建设等企业级互联网基础服务,服务热线:18982081108
main()函数写成int型的,即int main()
然后结束的时候
只需return 0;
代表程序正常结束
方法二:
利用
if(条件)
exit();
if语句条件满足时退出程序。
楼主的意思是在str1中删除str2中出现的字符?那么改成:
#includestdio.h
void main ()
{
char str1[9]={'t','i','n','m','f','g','y','f','s'};
char str2[3]={'A','s','g'};
int i,k,l;
for(i=0;i9;i++)
{
l=0;
for(k=0;k3;k++)
{
if (str1[i]=str2[k])
{l=1;break;}
}
if l!=1
printf("%c",str1[i]);
}
}
下面函数在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;
}
}
}