删除子串
【问题描述】编写一个程序,当在一个字符串中出现子串时就删除它。
【输入形式】用户在第一行输入一个字符串,用户在第二行输入一个子串。注意:第二行输入结束时可能用回车,也可能不用回车。
【输出形式】程序在下一行输出删除其中所有子串后的字符串。如果字符串不包含子串则输出原字符串本身。
【样例输入】
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;}