C语言。编写程序。输入任意一个字符串,删除指定位置的字符后输出该字符串。
4个回答
展开全部
#include <stdio.h>
#include <string.h>
char* DelCharFromString(char *str, int len, int pos);
void main()
{
char str[100];
int pos; //删除位置
int len; //字符串长度
printf("请输入一个字符串:\n");
scanf("%s", str);
len = strlen(str);
printf("请输入要删除字符的位置:(0~%d)", len-1);
scanf("%d", &pos);
printf("str = %s\n", DelCharFromString(str, len, pos));
}
char* DelCharFromString(char *str, int len, int pos)
{
int i;
char *tmp = str;
if(pos <0 || pos >= len)
{
printf("要删除的位置不存在,什么字符都不删除。\n");
return str;
}
for(i=0; i<len-1; i++)
{
if(i >= pos)
{
*tmp = *(tmp+1);
}
tmp++;
}
*tmp = '\0';
return str;
}
推荐于2017-08-24
展开全部
你的代码存在以下问题1、str长度不够,如果将str当字符串处理的话(由printf以字符串格式化输出就知道你把str当字符串来处理),一定要有结束符'\0',也就是str数组长度至少为8;2、在删除函数中,没有考虑越界问题,当i为n-1时,p[i+1]为p[n],肯定越界了,再一个,别忘了在这里移动字符后补'\0',比如把student的最后一个t往前移后,要把当前的t给替换成'\0'
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char str[100];
int mark,i;
cin>>str;
cin>>mark;//这里的指定位置用mark表示了!要是不对可以改。
str[mark-1]=0;//字符串是从0开始的,所以这里mark-1。
for(i=mark;str[i];i++)
{
str[i-1]=str[i];
}
str[i-1]=0;
cout<<str;
return 0;
}
#include<cstring>
using namespace std;
int main()
{
char str[100];
int mark,i;
cin>>str;
cin>>mark;//这里的指定位置用mark表示了!要是不对可以改。
str[mark-1]=0;//字符串是从0开始的,所以这里mark-1。
for(i=mark;str[i];i++)
{
str[i-1]=str[i];
}
str[i-1]=0;
cout<<str;
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void fn(char* s,int i)
{
if (strlen(s)<i-1) return;
while(s[i-1]) { s[i-1]=s[i]; i++; }
}
void main()
{
char s[11]="123456789";
fn(s,5);
cout<<s<<endl;//输出"1236789" 第5个字节被删.
cin.get ();
}
{
if (strlen(s)<i-1) return;
while(s[i-1]) { s[i-1]=s[i]; i++; }
}
void main()
{
char s[11]="123456789";
fn(s,5);
cout<<s<<endl;//输出"1236789" 第5个字节被删.
cin.get ();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询