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

2024-11-15 05:11:42
推荐回答(4个)
回答1:

#include 
#include 

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 {
if(i >= pos)
{
*tmp = *(tmp+1);
}
tmp++;
}
*tmp = '\0';
return str;
}

回答2:

你的代码存在以下问题1、str长度不够,如果将str当字符串处理的话(由printf以字符串格式化输出就知道你把str当字符串来处理),一定要有结束符'\0',也就是str数组长度至少为8;2、在删除函数中,没有考虑越界问题,当i为n-1时,p[i+1]为p[n],肯定越界了,再一个,别忘了在这里移动字符后补'\0',比如把student的最后一个t往前移后,要把当前的t给替换成'\0'

回答3:

#include
#include
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< return 0;
}

回答4:

void fn(char* s,int i)
{
if (strlen(s) while(s[i-1]) { s[i-1]=s[i]; i++; }
}
void main()
{
char s[11]="123456789";
fn(s,5);
cout< cin.get ();
}