编程序将给定字符串中指定字符删除。要求删除指定字符后原字符串不能留下空位置,字符串和指定字符均由键盘输入。
要求用指针解决的。。
建立一个结构体,里面有2个变量(一个为字符,一个为指针);
指针类型为该结构体,用于指向下一个结点,
输入完后,从头开始查找;找到指定字符时,删掉该结点只要将结点的指针指向下一个结点;
并释放要删除的那个字符结点的指针。
看不懂的话说下,我给你编个。
指针类型为该结构体,用于指向下一个结点,
输入完后,从头开始查找;找到指定字符时,删掉该结点只要将结点的指针指向下一个结点;
并释放要删除的那个字符结点的指针。
看不懂的话说下,我给你编个。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2006-11-23
楼上说的是链表
其实用数组完全可以解决
定义一个足够大的char数组str[100]
然后
int b=100;数组长度
for(int i=0;i<100;i++)
{
if(str[i]=='你要删的字符')
{
xxx(str,i,b--);
}
}
public void xxx(char[]str,int a(要删除字符位置),int b(数组长))
{
for(int i=a;i<b-1);i++)
{
str[i]=str[i+1];
}
}
没有试验,但想法应该正确
有什么问题可问我,呵呵,多多交流啊
其实用数组完全可以解决
定义一个足够大的char数组str[100]
然后
int b=100;数组长度
for(int i=0;i<100;i++)
{
if(str[i]=='你要删的字符')
{
xxx(str,i,b--);
}
}
public void xxx(char[]str,int a(要删除字符位置),int b(数组长))
{
for(int i=a;i<b-1);i++)
{
str[i]=str[i+1];
}
}
没有试验,但想法应该正确
有什么问题可问我,呵呵,多多交流啊
第2个回答 2006-11-23
逐个检查字符,如果是要删除的字符,就将后面所有字符前移一格
#include <stdio.h>
main()
{char str[81],c;
int i,j;
printf("input str\n");
gets(str);
printf("input char\n");
c=getchar();
for(i=0;str[i];)
if(str[i]==c)
for(j=i;str[j];j++)
str[j]=str[j+1];
else i++;
printf("%s\n",str);
}
#include <stdio.h>
main()
{char str[81],c;
int i,j;
printf("input str\n");
gets(str);
printf("input char\n");
c=getchar();
for(i=0;str[i];)
if(str[i]==c)
for(j=i;str[j];j++)
str[j]=str[j+1];
else i++;
printf("%s\n",str);
}