标题:[求助]删去字符串s中从第i个字符开始的连续j个字符
只看楼主
lplp9988
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-8-3
 问题点数:0 回复次数:5 
[求助]删去字符串s中从第i个字符开始的连续j个字符
求助:设计一个算法,删去字符串s中从第i个字符开始的连续j个字符.
搜索更多相关主题的帖子: 删去 字符 
2006-08-03 11:03
yuleol
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2005-12-10
得分:0 

#include<stdio.h>
void del(char *p,int i,int j);
void main()
{
int i,j;
char str[50];
printf("Input str:");
scanf("%s",str);
printf("Input i,j:");
scanf("%d%d",&i,&j);
del(str,i,j);
printf("%s\n",str);
}

void del(char *p,int i,int j)
{
int n;
char *q;
for(n=1;n<i;n++)
p++;
q=p;
for(n=0;n<j;n++)
q++;
while(*q!='\0')
{
*p=*q;
p++;
q++;
}
*p='\0';
}


兴趣是我的源动力!
2006-08-03 11:32
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
可以把字符串分成两段,再连接。
char *p=&str[j];
str[i]='\0';
再把str和*p连起来。

倚天照海花无数,流水高山心自知。
2006-08-03 14:48
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
得分:0 
void del(char *p, const int begin, const int end)
{
char *p1, *p2;

p1=p2=p;

for(p1=p1+(begin-1), p2=p2+end; *p2!='\0'; p1++, p2++)
*p1=*p2;
*p1='\0';

return;
}


2006-08-03 17:08
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
得分:0 
解决方法2
int del(char *p, const int begin, const int end)
{
char *p1, *p2;
char tmp1[20], tmp2[20];

p1=p2=p;

p1[begin-1]='\0';
strcpy(tmp1, p);

p2=p2+end;
strcpy(tmp2, p2);

sprintf(p, "%s%s\0", tmp1, tmp2);
//printf("%s\n", p);

return 0;
}

2006-08-03 17:15
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
得分:0 
#include<stdio.h>
#include<string.h>
int main(void)
{
char *string = NULL;
if (!(string=malloc(100))) exit (1);
gets(string);
int i, j;
scanf("%d%d", &i, &j);
strcpy(string+i-1, string+i+j-1);
puts(string);
free(string);
return 0;
}

我的原则很简单:不做不喜欢的事!
2006-08-03 18:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-81808-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067929 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved