【指针作为函数参数、指针访问字符数组元素】编写函数去除字符串 S 从
第 k 个字符开始的 n 个字符。函数原型为 delchar(char *p, int k, int n);
所谓从k个字符开始删除n个字符,就是将k+n个以后的字符网前移动覆盖掉这n个字符即可,如果考虑得细致些,可以增加判断原字符串的第k个字符是否有足够的n个字符可删,省得出错。
#include<stdio.h>
void delchar(char *p,int k,int n){ int nn,nnn;
char *q;
k--;
nn=0; q=p; while ( *q ) { q++; nn++; }
nnn=nn-k-n; if ( nnn<0 ) return;
p+=k; q=p; q+=n; while ( *q ) { (*p)=(*q); p++; q++; }
(*p)=0;
}
void main()
{
int i;
char a[20]={ "abcdefghijk" };
printf("%s\n",a);
delchar(a,5,3);
printf("%s\n",a);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-12-15
void delchar(char *p, int k, int n) {
char *s;
p = p + k;
s = p + n;
while ((*p = *s) != 0) ;
}
char *s;
p = p + k;
s = p + n;
while ((*p = *s) != 0) ;
}
第2个回答 2014-12-15
delchar(char *p, int k, int n)
{
memset( p+k, 0x00, n);
char *pChar = (char)malloc( strlen(p+k+n));
memcpy( pChar, p+k+n, strlen(p+k+n));
memcpy( p+k, pChar, strlen(p+k+n));
free(pChar);
}
{
memset( p+k, 0x00, n);
char *pChar = (char)malloc( strlen(p+k+n));
memcpy( pChar, p+k+n, strlen(p+k+n));
memcpy( p+k, pChar, strlen(p+k+n));
free(pChar);
}