|
![]() | 作者: 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号