方法一:
創(chuàng)新互聯(lián)-云計(jì)算及IDC服務(wù)提供商,涵蓋公有云、IDC機(jī)房租用、西部信息中心、等保安全、私有云建設(shè)等企業(yè)級(jí)互聯(lián)網(wǎng)基礎(chǔ)服務(wù),服務(wù)熱線:18982081108
main()函數(shù)寫成int型的,即int main()
然后結(jié)束的時(shí)候
只需return 0;
代表程序正常結(jié)束
方法二:
利用
if(條件)
exit();
if語句條件滿足時(shí)退出程序。
樓主的意思是在str1中刪除str2中出現(xiàn)的字符?那么改成:
#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]);
}
}
下面函數(shù)在p1中刪除p2中出現(xiàn)的任何字符。
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;
}
刪除串比較麻煩,刪除一個(gè)子串后可能會(huì)在原字符串中構(gòu)造出一個(gè)新的子串,所以處理起來不是太簡單,比如輸入字符串:abcdeddefeffghijklmn,從中刪除def
如果不計(jì)較效率的話重新掃描那部分回退到p1開始就行了,更清晰點(diǎn)。
下面函數(shù)在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;
}
}
}