c语言关于字符串的

把一个字符串中的某个字符c全部删除后,移出前n个字符放到字符串的最后面。输入数据第一行是字符串第二行是字符c第三行是整数n输出数据最后获得的字符串输入示例fdhjslfa... 把一个字符串中的某个字符c全部删除后,移出前n个字符放到字符串的最后面。

输入数据 第一行是字符串
第二行是字符c
第三行是整数n
输出数据 最后获得的字符串

输入示例 fdhjslfajsabvgfj
f
5

输出示例 ajsabvgjdhjsl

#include<stdio.h>
#include<string.h>
main()
{
char a[80],b[80],c[80],d;
int i,p,j=0,k,n,q=0,s,m;
gets(a);
scanf("%c\n",&d);
scanf("%d\n",&n);
k=strlen(a);
for(i=0;i<k;i++)
if(a[i]!=d)
{b[j]=a[i];j++;}
b[j]='0';
k=strlen(b);
for(p=n+1;p<k;p++)
{c[q]=b[p];q++;}
for(s=0;s<n+1;s++)
{c[q]=b[s];q++;}
c[q]='0';
for(m=0;m<k;m++)
printf("%c",c[m]);
return 0;
}

我写的,什么也不输出,错误在哪里啊?
展开
 我来答
修魔go
2014-06-26 · TA获得超过119个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:112万
展开全部

这是我写的代码,你参考一下,,已经调试好了,,多多指教,,,

#include <stdio.h>
void move(char *p,int i);
void remove(char *a,char f);
int main()
{

  int i;
  char a[60],f;
  puts("输入字符串:");
  gets(a);
   puts("输入要删除的字符:");
  f=getchar();
  remove(a,f);
   puts("删除后:");
  puts(a);
  puts("输入需要互换的前几个数:");
  scanf("%d",&i);
  move(a,i);
  puts("互换后:");
  puts(a);
  return 0;
}


void remove(char *a,char f)
{      char *b=a;
       while(*b!='\0')
{
           if(*b!=f) { *a=*b;a++;}
           b++;
}
*a=*b;//把字符串标志写进去
}

/*void move(char *p,int i)   方法1  复杂一点但是系统的实际工作少
{
     char  *a=p+i,*b=a,f;
     while(p!=a)         //a记录开始位置  b也记录开始位置保持不变 作为循环结束条件
{
               f=*a;                   
               *a=*p;//互换  把第一个移到开始位置  把开始位置的字符作为前面字符出现
               *p=f;

         while(*(a+1)!='\0')//通过循环把它传到最后面  那么此时开始位置又出现新的字符 注意是*(a+1)!='\0'而不是*a!='\0'
   {
     f=*a;
              *a=*(a+1);
              *(a+1)=f;
              a++;
   }     
              a=b;//把a置初始位置
              p++;//移动下一个需要移动到最后面的字符
}
}
*/
void move(char *a,int i) //方法二 简单一些  但是系统的实际工作要多一些
{
 char *b=a,f;
 int j=0;
 for(;j<i;j++)
 {
  while(*(b+1)!='\0')
  {           
   f=*b;
   *b=*(b+1);
   *(b+1)=f;
   b++;
  }
  b=a;
 }
}
                

 

 

运行结果:

龍__鳳
2014-06-26 · TA获得超过2346个赞
知道小有建树答主
回答量:948
采纳率:0%
帮助的人:1409万
展开全部
#include<stdio.h>
#include<string.h>
int main()
{
char a[80],b[80],c[80],d;
int i,p,j=0,k,n,q=0,s,m;
gets(a);
scanf("%c",&d);//去掉\n
scanf("%d",&n);//去掉\n
k=strlen(a);
for(i=0;i<k;i++)
{
if(a[i]!=d)
{
b[j]=a[i];
j++;
}
}
b[j]='\0';//结束符是'\0'
k=strlen(b);
for(p=n+1;p<k;p++)
{
c[q]=b[p];
q++;
}
for(s=0;s<n+1;s++)
{
c[q]=b[s];
q++;
}
c[q]='\0';//结束符是'\0'
for(m=0;m<k;m++)
printf("%c",c[m]);
return 0; 
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式