c++ 函数 删除字符串指定位置的字符
4个回答
展开全部
#include<iostream>
using namespace std;
void str_dele(char str[],int m) //删除字符串str的第m个字符
{
int i,j=0,length=strlen(str);
char temp_str[100];
if(m>strlen(str))
cout<<"删除的位置不对!"<<endl;
else
{
for( i=0;i<strlen(str);i++)
if(i==m-1) continue;
else
temp_str[j++]=str[i];
}
for(i=0,j=0;j<length-1;)
str[j++]=temp_str[i++];
}
int main()
{
char str_0[]="abcdefghijik";
cout<<"原来的字符串为:"<<endl;
cout<<str_0<<endl;
str_dele(str_0,2); //函数调用
cout<<"删除指定位置字符后的字符串:"<<endl;
cout<<str_0<<endl;
system("pause");
return 0;
}
using namespace std;
void str_dele(char str[],int m) //删除字符串str的第m个字符
{
int i,j=0,length=strlen(str);
char temp_str[100];
if(m>strlen(str))
cout<<"删除的位置不对!"<<endl;
else
{
for( i=0;i<strlen(str);i++)
if(i==m-1) continue;
else
temp_str[j++]=str[i];
}
for(i=0,j=0;j<length-1;)
str[j++]=temp_str[i++];
}
int main()
{
char str_0[]="abcdefghijik";
cout<<"原来的字符串为:"<<endl;
cout<<str_0<<endl;
str_dele(str_0,2); //函数调用
cout<<"删除指定位置字符后的字符串:"<<endl;
cout<<str_0<<endl;
system("pause");
return 0;
}
更多追问追答
追问
# include
# include
void delch(char *s,int n)
{
for(int i=n;*s!='\0';i++)
*(s+i)=*(s+i+1);
}
void main()
{
char str[15];
int m;
cin>>str;
cout>m;
delch(str,m);
cout<<str<<endl;
}错哪了??
追答
函数定义错了,for中的条件*s!='\0',在后面你使用的是s+i来依次取后面的值,而没有移动指针,指针一直都指向字符串的第一个字符。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int str_len(char *p)
{
int i = 0;
while(*p!='\0') {
i++;
p++;
}
return i;
}
void str_del(int loc,char *p)
{
int i;
for(i=loc-1;i<str_len(p);i++) {
*(p+i) = *(p+i+1); }
}
int main()
{
char a[] = "hello";
char *p = a;
int length;
int loc = 2;
length = str_len(p);
printf("%d\n",length);
str_del(loc,p); printf("%s",a);
}
{
int i = 0;
while(*p!='\0') {
i++;
p++;
}
return i;
}
void str_del(int loc,char *p)
{
int i;
for(i=loc-1;i<str_len(p);i++) {
*(p+i) = *(p+i+1); }
}
int main()
{
char a[] = "hello";
char *p = a;
int length;
int loc = 2;
length = str_len(p);
printf("%d\n",length);
str_del(loc,p); printf("%s",a);
}
追问
printf("%d\n",length);
str_del(loc,p); printf("%s",a); 。。。。
我、没学过????
还有:可以随便输入多少字符吗????
追答
printf("%d\n",length); //输出的是某字符串的长度。
str_del(loc,p);//就是你要求的删除某字符串指定位置的字符,这里loc就是位置,我现在设置的是2,你也可以改。我编的函数只是删除一个字符。
printf("%s",a); //这个是输出删除后的结果,来验证一下。
注:那个printf和cout作用一样,进行输出的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C++中的string类中有erase成员函数,其功能是删除字符串中的字符或字符串。
该成员函数的原型为
string erase(int start, int len); //start为要删除字符的起始位置(从0数起),len为要删除字符的个数。
例如:
...
#include<string>
using namespace std;
...
string s1="asdfgh", s2;
s2=s1.erase(2,3); //删除s1中从第2个字符其的3个字符。
则s2的内容为"ash"
该成员函数的原型为
string erase(int start, int len); //start为要删除字符的起始位置(从0数起),len为要删除字符的个数。
例如:
...
#include<string>
using namespace std;
...
string s1="asdfgh", s2;
s2=s1.erase(2,3); //删除s1中从第2个字符其的3个字符。
则s2的内容为"ash"
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询