论坛: 编程破解 标题: 求助C语言。 复制本贴地址    
作者: baobao [gnijnil]    论坛用户   登录
从一个字符串中删除指定子串,例“banana”中删除子串“na”,则变为“ba”。



#include <stdio.h>
#include <string.h>
main()
{char str[100],ch[100];
int i,j,k,m,n=0;
printf("Input first string:");
gets(str);
printf("\n");
printf("Input second string:");
gets(ch);
printf("\n");
k=strlen(ch);
for(m=0;m<=k-1;m++)
  for(i=0;str[i]!='\0';i++)
    {if(str[i]==ch[m] && str[i+1]==ch[m+1])
      {for(j=i;str[j]!='\0';j++)
          str[j]=str[j+k];
        i--;
        }
      }
printf("Deleted String:%s\n",str);
getch();
}

为什么这样就不行?
Input first string:jjjjj
Input second string jj
Deleted String:      (结果应该是j啊。为什么会什么都没有?)


地主 发表时间: 05-05-10 16:09

回复: echo [qiezic]      登录
好象代码有问题。
当循环到最后两个jj时,执行str[j]=str[j+k];这句时结果是这样的str[j]='\0',应该在这里加个判断!
好久没写TC了,不知说的对不对!

B1层 发表时间: 05-05-10 16:47

回复: bellamy [bellamy]   论坛用户   登录
if(str[i]==ch[m] && str[i+1]!='\0' && str[i+1]==ch[m+1]

B2层 发表时间: 05-05-10 17:38

回复: baobao [gnijnil]   论坛用户   登录

谢了。


B3层 发表时间: 05-05-10 20:09

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号