69,369
社区成员
发帖
与我相关
我的任务
分享
#include "stdio.h"
int delchr(char *p, char c)
{
int ir = 0, i = 0;
char *temp = p, *ch = p;
for(i = 0; i < strlen(p); i++)
{
if(temp[i] == c)
{
ir++;
*ch = temp[i];
}
else
{
*ch = temp[i];
ch++;
}
}
memset(ch, 0, ir);
return ir;
}
int main()
{
char *constp = "aabbccfasdgsjasbgbweoiueiasdfbaadkfkbbvaljfbvbafabf", *p;
char c = 'b';
p = (char*)malloc(strlen(constp)+1);
strcpy(p, constp);
printf("string(%s) has %d char(%c),and has been deleted!\n", p, delchr(p, c), c);
printf("result string = %s", p);
free(p);
getch();
return 1;
}
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int del_char(char* src, char c)
{
if ( NULL == src)
{
fprintf(stderr, "del_char failed: invalid input.\n");
return -1;
}
char* pchTemp = (char*)malloc(strlen(src) + 1);
if ( NULL == pchTemp)
{
fprintf(stderr, "del_char failed: malloc failed\n");
return -1;
}
int num = 0;
int i = 0;
int j = 0;
while ( src[i] != '\0')
{
if ( src[i] != c)
{
pchTemp[j++] = src[i++];
}
else
{
i++;
num++;
}
}
pchTemp[j] = '\0';
if ( 0 != num)
{
strncpy(src, pchTemp, strlen(pchTemp) + 1);
}
free(pchTemp);
return num;
}
int main(int argc, char* argv[])
{
if ( 3 != argc)
{
fprintf(stderr, "Usage: %s [src] [c]\n", argv[0]);
return -1;
}
char szSrc[512] = {0};
snprintf(szSrc, sizeof(szSrc), "%s", argv[1]);
char c = argv[2][0];
int num = 0;
if ( (num = del_char(szSrc, c)) < 0)
{
return -1;
}
else
{
printf("num: %d after del %c: %s\n", num, c, szSrc);
return 0;
}
return 0;
}
#include <stdio.h>
int delchar( char *str,char c );
void main()
{
int n;
char str[30];
char c;
gets(str);
printf("insert the char:\n");
c = getchar();
n=delchar( str,c );
printf("%s\n",str);
printf("%d\n",n);
}
int delchar( char *str, char c )
{
int n=0,i,j;
for ( i=0; *(str+i)!='\0'; i++ )
{
if ( *(str+i) == c )
{
n++;
for ( j=i; *(str+j)!='\0'; j++ )
{
*(str+j) = *(str+j+1);
}
}
}
return( n );
}
#include "stdio.h"
int delchr(char *p, char c)
{
int ir = 0, i = 0;
char *temp = p, *ch = p;
for(i = 0; i < strlen(p); i++)
{
if(temp[i] == c)
{
ir++;
*ch = temp[i];
}
else
{
*ch = temp[i];
ch++;
}
}
memset(ch, 0, ir);
return ir;
}
int main()
{
char *constp = "aabbccfasdgsjasbgbweoiueiasdfbaadkfkbbvaljfbvbafabf", *p;
char c = 'b';
p = (char*)malloc(strlen(constp)+1);
strcpy(p, constp);
printf("string(%s) has %d char(%c),and has been deleted!\n", p, delchr(p, c), c);
printf("result string = %s", p);
free(p);
getch();
return 1;
}
int delchar(char *szSour, char *szOut, char aDel)
{
char *cpSour = szSour;
char *cpOut = szOut;
int iCnt=0;
for(;*cpSour!='\0';cpSour++)
{
if(*cpSour==aDel)
{
iCnt++;
}
else
{
*cpOut++=*cpSour;
}
}
return iCnt;
}
调用方法:
char *szSour="abcdckkkdcddc";
char szOut[32]={0};
int iDelCnt = delchar(szSour, szOut, 'c');
相比上边几种,这个应该更通用一下,也更加简洁
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LIM 20
void Del_str (char *srcStr, char * objStr,int len,int* count);
int main (void)
{
char str[LIM] = "TheClanguage";
char *p;
int n;
int count = 0;
n = strlen (str);
p = (char*)malloc((n+1)*sizeof(char));
memset(p,0,sizeof(p));
Del_str(str,p,n,&count);
printf("%s\n",p);
printf("%d\n",count);
free(p);
return 0;
}
void Del_str (char *srcStr,char* objStr,int len,int* count)
{
int i = 0,j=0;
int index = 0;
index = *count;
for (i = 0; i < len;i++)
{
if( (*srcStr == 'c') || (*srcStr == 'C'))
{
index++;
}
else
{
objStr[j] = *srcStr;
j++;
}
*srcStr++;
}
objStr[j] = '\0';
*count = index;
}
void delchar(char *p)
{
int i = 0,j=0;
char *t = new char[strlen(p)];
while(*p!=0)
{
if (*p == 'c')
{
i+=1;
}
else
{
t[j] = *p;
j+=1;
}
p++;
}
t[j+1] = 0;
printf("%s",t);
printf("%d",i);
}
void main()
{
char *p = "abccdecab";
delchar(p);
}