编写一个函数,删除字符串中指定位置上的字符,删 除成功返回被删除的字符,否则返回空值。
2个回答
展开全部
写了一个,不过因为我只是初学,所以写的不好,不过运行了,可以
#include <stdio.h>
char *delete(char *p, int i);
char a;
int main()
{
char a[40], *b;
int i;
printf("请输入字符串\n");
scanf("%s", a);
printf("请输入你要删除第几个字符\n");
scanf("%d", &i);
b = delete( a, i);
if(b == NULL)
{
printf(" 删除失败\n");
}
else
{
printf("删除的字符是 %c \n", *b);
}
printf("%s\n", a);//输出删除后的字符串
return 0;
}
char *delete(char *p, int i)
{
int lengh = 0, j = 0;
char * b = p;
while(*p != '\0')//求出字符串的长度,lengh中存放字符串的长度用于比较
{
p++;
lengh++;
}
p = b;//因为p移动到最后的位置,将其重新定位到开始位置
if(i > lengh || i < 1)//判断i是否大于零并小于字符串的长度,如果不合理就返回
{
return NULL;
}
a = *( p + i -1);//用全局变量保存要删除的字符
for(j = i - 1; j < lengh; ++j)//调整字符串,让后面的字母依次替换前面的,包括'\0';
{
*(p + j) = *(p + j + 1);
}
return &a;// 返回a的地址
}
#include <stdio.h>
char *delete(char *p, int i);
char a;
int main()
{
char a[40], *b;
int i;
printf("请输入字符串\n");
scanf("%s", a);
printf("请输入你要删除第几个字符\n");
scanf("%d", &i);
b = delete( a, i);
if(b == NULL)
{
printf(" 删除失败\n");
}
else
{
printf("删除的字符是 %c \n", *b);
}
printf("%s\n", a);//输出删除后的字符串
return 0;
}
char *delete(char *p, int i)
{
int lengh = 0, j = 0;
char * b = p;
while(*p != '\0')//求出字符串的长度,lengh中存放字符串的长度用于比较
{
p++;
lengh++;
}
p = b;//因为p移动到最后的位置,将其重新定位到开始位置
if(i > lengh || i < 1)//判断i是否大于零并小于字符串的长度,如果不合理就返回
{
return NULL;
}
a = *( p + i -1);//用全局变量保存要删除的字符
for(j = i - 1; j < lengh; ++j)//调整字符串,让后面的字母依次替换前面的,包括'\0';
{
*(p + j) = *(p + j + 1);
}
return &a;// 返回a的地址
}
更多追问追答
追问
程序错误 = =、 运行不了
追答
没有啊,我才用了VS2010试了,可以的啊,你把错误复制下我看一下我能不能改
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询