C语言。编写程序。输入任意一个字符串,删除指定位置的字符后输出该字符串。

 我来答
lylovehl
2014-06-08 · TA获得超过1785个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:148万
展开全部
#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'
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
防御333
2014-06-08 · TA获得超过5892个赞
知道大有可为答主
回答量:2348
采纳率:85%
帮助的人:2016万
展开全部
#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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
新泥称
2014-06-08 · TA获得超过339个赞
知道答主
回答量:216
采纳率:75%
帮助的人:24.5万
展开全部
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 ();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式