首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

删除子串解决思路

2012-02-20 
删除子串【问题描述】编写一个程序,当在一个字符串中出现子串时就删除它。【输入形式】用户在第一行输入一个字

删除子串
【问题描述】编写一个程序,当在一个字符串中出现子串时就删除它。
【输入形式】用户在第一行输入一个字符串,用户在第二行输入一个子串。注意:第二行输入结束时可能用回车,也可能不用回车。
【输出形式】程序在下一行输出删除其中所有子串后的字符串。如果字符串不包含子串则输出原字符串本身。
【样例输入】
 I am a boy!
 a  
【样例输出】
 I m boy!  
【样例说明】用户首先输入字符串I am a boy!,然后输出子串a,程序会寻找字符串中的子串删除它,最后 将删除后的结果输出:I#m##boy! #表示空格。


[解决办法]
用库函数strstr即可, 
http://msdn.microsoft.com/en-us/library/z9da80kz%28VS.71%29.aspx

C/C++ code
#include <string.h>#include <stdio.h>char source_str[1024];char del_str[1024];char dest_str[1024];int main( void ){   char *pdest;   int  result;   fgets(source_str, 1024, stdin);   fgets(del_str, 1024, stdin);   source_str[strlen(source_str)-1] = '\0';   del_str[strlen(del_str)-1] = '\0';   pdest = strstr(source_str, del_str);   result = 0;   while(pdest != NULL) {      strncat(dest_str, &source_str[result], (int)(pdest - &source_str[result]));      result += (int)(pdest - &source_str[result]) + strlen(del_str);      pdest = strstr(&source_str[result], del_str);   }   if(result < strlen(source_str)) {      strncat(dest_str, &source_str[result], strlen(source_str) - result);   }   printf("%s\n", dest_str);   return 0;} 

热点排行