写了一个,不过因为我只是初学,所以写的不好,不过运行了,可以
#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试了,可以的啊,你把错误复制下我看一下我能不能改
追问H:\新建文件夹\未命名7.cpp: In function `int main()':
H:\新建文件夹\未命名7.cpp:15: error: type `int' argument given to `delete', expected pointer
H:\新建文件夹\未命名7.cpp: At global scope:
追答可能是你把文件建成了c++,c++中delete有特定的作用,不能这样,你可以把所有的delete函数改一个名字,(然后在头文加上 include ,在int main()中的 return 前加上system("pause");这个只是让程序运行后暂停,避免DOS闪一下就关了)
或者把你的文件后缀改成 C,然后在试一下
本回答被提问者和网友采纳