当前位置: 代码迷 >> C语言 >> 请指教下列函数的错误之处
  详细解决方案

请指教下列函数的错误之处

热度:167   发布时间:2008-01-29 22:37:09.0
回复 10# 的帖子
答案显然不对啊
----------------解决方案--------------------------------------------------------
回复 11# 的帖子
我还是附上错误的程序吧
#include<stdio.h>
char removeString(char String[], int Start, int count)
{
   int i;
   for(i=Start; i<Start+count; i++)
  
String[i]="";
return* String;
}

int main(void)
{
char removeString(char String[], int Start, int count);
printf("%s\n", removeString("the wrong son", 4, 6) );
}
----------------解决方案--------------------------------------------------------
'\0'
----------------解决方案--------------------------------------------------------
回复 13# 的帖子
我的目的在于将"the wrong son" 中的"wrong "去掉, 我用空字符来取代, 你却要用'\0', 这显然是错的嘛, 你可以自己把程序在机上验证下。
----------------解决方案--------------------------------------------------------
删除指定字符是你那样做的么?
----------------解决方案--------------------------------------------------------
不是很完整,了解一下够用了:
char* RemoveString(char* str,int start,int last)
{
    if(!str||strlen(str)==0) return NULL;
    else
    {
        char* p=str+last+1;
        int i=start;
        for(;*p!='\0';p++)
               str[i++]=*p;
        str[i]='\0';
        return str;
    }
}
----------------解决方案--------------------------------------------------------
经验与教训:请发帖时详细说明程序的目的,这样才不会走弯路。
----------------解决方案--------------------------------------------------------
这个程序本身就有些问题。如果你是想将字符串“the wrong son”中的“wrong ”(后面有一个空格)去掉的话最好不要写这样的函数!分析一下你的思路,你是想将字符串“wrong ”用空格替换掉,但是即使你的代码正确,输出的结果是:

the       son

也就是说,你写的函数并不能漂亮的完成任务!我其实也是刚学C语言,我还不知道返回字符串的函数该怎么写,但是觉得能用指针来完成:

#include "stdio.h"
#include "conio.h"
char *removeString(char *p,int s,int c)
{
char *q,*r;
int i;
q=p;r=p;
for(i=0;i<=15;i++,p++)
{
  if((i<s)||(i>s+c))
   {
    *q=*p;q++;
   }
}
return r;
}
void main()
{
char *p="the wrong son";
int start,count;
start=4;count=6;
p=removeString(p,start,count-1);
printf("%s\4;
getch();
}

我没有考究算法,可能在算法上较为复杂。运行结果应该为:

the son
----------------解决方案--------------------------------------------------------
  相关解决方案