当前位置: 首页 > news >正文

C语言实现 字符串过滤并修改并返回个数

基本问题:给定一个strContent,strWord,使用strWord 匹配strContent,匹配成功,将匹配部分全部替换为‘*’ ,并返回匹配成功个数。注意不能使用库函数。

 例如:strContent = "today is sunday."  strWord = "day"  那么应该返回2,而且strContent变成 "to*** is sun***."

问题不难,但是对我来说有些考验。

 

#include <stdlib.h>
#include <stdio.h>
#include <string.h> // 用来测试,输入数据用的,题目要求不能使用库函数

int filter(char *strContent, char *strWord)
{
    int count = 0;
    char *p = strContent;
    char *s = strWord;
    if (p == NULL || s == NULL)
        exit(1);    
    while(*p != '\0')
    {
        char *p1 = p;
        s = strWord;
        for(;*p1 == *s && *s!= '\0';p1++,s++);
        if (*s == '\0')
        {
            count++;
            s = strWord;
            while(*s++ != '\0') *--p1 = '*';
        }
        if (*p1 == '\0')    
        {
            break;
        }    
        p++;
    }
    return count;
}

int main(int argc, char *argv[])
{
    char *strContent = (char *) malloc(20);
    char *strWord = (char *) malloc(20);
    strcpy(strContent, argv[1]);
    strcpy(strWord, argv[2]);
    int result = filter(strContent, strWord);
    printf("result : %d\n", result);
    printf("strContent : %s\n", strContent);
    return 0;
}

 

我的方法很笨,想了很久,才能够完成,真的是惭愧。

如果有更好的办法,求指教。

转载于:https://www.cnblogs.com/xie-mx/p/3612590.html

相关文章:

  • 记录:对这次转正的一些预测
  • mysql插入中文报错
  • Nebula3嵌入WPF
  • i=i++在java等高级语言的解释
  • JVM学习笔记(一)------基本结构
  • JVM学习笔记(二)------Java代码编译和执行的整个过程
  • 工具汇总
  • 听讲座笔记:国立交通大学《如何成功投稿国际科学期刊》 投稿准备+审稿流程剖析...
  • kettle使用命令行来运行ktr和kjb
  • oracle URL参数获取
  • 记录:真是有这个字
  • Bulk Insert的用法 .
  • JVM学习笔记(三)------内存管理和垃圾回收
  • hdu3436Queue-jumpers(线段树)
  • Web 4.0: “中国式”物联网定义
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Angular 响应式表单 基础例子
  • es的写入过程
  • ViewService——一种保证客户端与服务端同步的方法
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 复杂数据处理
  • 如何选择开源的机器学习框架?
  • 一道面试题引发的“血案”
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • linux 淘宝开源监控工具tsar
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #WEB前端(HTML属性)
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (1)(1.13) SiK无线电高级配置(五)
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (AngularJS)Angular 控制器之间通信初探
  • (floyd+补集) poj 3275
  • (笔试题)分解质因式
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)http-server应用
  • (转)Oracle存储过程编写经验和优化措施
  • (转载)Google Chrome调试JS
  • ***检测工具之RKHunter AIDE
  • .NET BackgroundWorker
  • .net core 6 redis操作类
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net 生成二级域名
  • .NET 中让 Task 支持带超时的异步等待
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • /etc/sudoer文件配置简析
  • @RequestMapping用法详解
  • @SuppressWarnings(unchecked)代码的作用
  • @Transactional 详解
  • [ C++ ] STL---stack与queue
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [Android]How to use FFmpeg to decode Android f...
  • [Bugku]密码???[writeup]
  • [C++数据结构](31)哈夫曼树,哈夫曼编码与解码