字符串处理

  • 功能描述:从键盘输入一个文本行后,为用户提供菜单选择,实现字符串一些操作——显示文本行、查找并替换指定子串、删除指定子串、统计指定子串数目
  • 实现代码:
 #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#pragma warning(disable:4996) #define NUM 256 void displayMenu();
int choiceItem();
void searchReplace(char *buf, char *s, char *t);
void deleteString(char *buf, char *s);
int totle(char *buf, char *s); main()
{
char buf[NUM];
char s[], t[];
int choice; system("cls");
printf("Enter a text line : "); /*输入待操作文本行*/
gets(buf);
do{
choice = choiceItem(); /*选择菜单项*/
switch (choice){
case :
printf("Search:");
gets(s);
printf("\nReplace:");
gets(t);
searchReplace(buf, s, t);
printf("\nThe result is %s\n", buf);
break;
case :
printf("\nDelete:");
gets(s);
deleteString(buf, s);
printf("\nThe result is %s\n", buf);
break;
case :
printf("\nSearch:");
gets(s);
printf("\nThe counts of %s is %d\n", s, totle(buf, s));
break;
case :
printf("\nThe string is %s\n", buf);
break;
}
} while (choice != );
printf("\n\nBey!");
} void displayMenu() /*显示菜单*/
{
printf("\n==========MENU===========\n");
printf("1............Search/Replace");
printf("\n2............Delete");
printf("\n3............Totle");
printf("\n4............Display");
printf("\n0............Exit\n");
printf("\nChoice:\n");
} int choiceItem() /*菜单选择*/
{
int choice;
char line[]; do{
displayMenu();
gets(line);
choice = atoi(line); /*将字符串转化为整型*/
} while (choice< || choice>);
return choice;
} void searchReplace(char *buf, char *s, char *t) /*查找替换子串*/
{
char m[]; /*内部缓冲区*/
char *searchPtr = NULL;
do{
searchPtr = strstr(buf, s); /*查找子串*/
if (searchPtr != NULL){
strcpy(m, searchPtr + strlen(s)); /*将子串后面的字符串备份到m中*/
strcpy(searchPtr, t);
strcpy(searchPtr + strlen(t), m);
}
} while (searchPtr != NULL);
} void deleteString(char *buf, char *s) /*删除子串*/
{
char *searchPtr = NULL;
do{
searchPtr = strstr(buf, s); /*查找子串*/
if (searchPtr != NULL){
strcpy(searchPtr, searchPtr + strlen(s));
}
} while (searchPtr != NULL);
} int totle(char *buf, char *s) /*统计子串出现的次数*/
{
int n = ;
char *searchPtr = NULL;
do{
searchPtr = strstr(buf, s); /*查找子串*/
if (searchPtr != NULL){
n++;
buf = searchPtr + strlen(s); /*改变查找的初始位置*/
}
} while (searchPtr != NULL);
return n;
}

c语言程序设计案例教程(第2版)笔记(六)—字符串处理实例的更多相关文章

  1. c语言程序设计案例教程(第2版)笔记(四)—指针、分配存储空间、文件

    零散知识点: 指针类型:每个变量占用的首单元地址称为这个变量的存储地址. “&”为“取地址运算符”.格式:&  变量名.功能:返回指定变量的存储地址. “*”为“取内容运算”.格式:* ...

  2. c语言程序设计案例教程(第2版)笔记(二)—函数、递归

    零散知识点 模块化:将一个问题分解成若干个子问题的过程成为模块化. 模块化的优点:不但可以将一个复杂的问题分解成几个相对简单的问题:还可以提高程序代码的重用性. 函数:函数是构成C程序的基本单位.函数 ...

  3. c语言程序设计案例教程(第2版)笔记(五)-软件开发基础知识

    零散知识点: 软件的主要特征 软件是一种逻辑产品,而不是有型的物质: 软件需要设计.开发,但不是传统意义上的产品制造: 软件不会磨损,但软件需要维护,即:修改代码或增加模块: 虽然软件行业正在向基于组 ...

  4. c语言程序设计案例教程(第2版)笔记(三)—变量、结构体

    零散知识点: 变量        :C语言中,每个变量必须先定义后引用.所谓变量存在是指系统为这个变量分配一块存储空间,此时对变量的操作,就是对变量所对应的存储空间中存放的数据进行操作.人们将变量占据 ...

  5. c语言程序设计案例教程(第2版)笔记(一)—零散、输入输出、最小公倍数、选择排序、冒泡排序

    零散知识点: 非格式化输入输出:getchar().putchar() 格式化输入输出   :scanf().printf() 字符串输入输出   :gets() 或 scanf().puts() 或 ...

  6. 0031 Java学习笔记-梁勇著《Java语言程序设计-基础篇 第十版》英语单词

    第01章 计算机.程序和Java概述 CPU(Central Processing Unit) * 中央处理器 Control Unit * 控制单元 arithmetic/logic unit /ə ...

  7. C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载

    下载地址:点我 C语言仍然是计算机领域的通用语言之一,但现在的C语言已经和当初的时候大不相同了.本书主要的一个目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程,不再强调“手工优化 ...

  8. Python基础教程(第3版) 笔记(二)

    1.8模块Python提供了完成(某人的年 龄为32.9,并想将这个值向下圆整为32,因为他还没有满33岁)这种任务的函 数floor.导入模块,可以使用特殊命令import.函数floor包含在模块 ...

  9. js高级教程第3版笔记(我的理解)陆续更新中

    js基础语法'use strict'(严格模式)定义变量var object;只声明未赋值,默认值为undefined;var object1=值;声明并赋值;function fun(a){这样也叫 ...

随机推荐

  1. otl_stream流相关绑定变量

    声明绑定变量 本章节将详细的说明如何在otl_stream流里面声明绑定变量. SQL语句.SQL语句块或存储过程在程序里面使用的时候总是带有占位符.OTL里面带有一个小的解析器用来解析这些占位符,并 ...

  2. poj 2965 The Pilots Brothers&#39; refrigerator(dfs 枚举 +打印路径)

    链接:poj 2965 题意:给定一个4*4矩阵状态,代表门的16个把手.'+'代表关,'-'代表开.当16个把手都为开(即'-')时.门才干打开,问至少要几步门才干打开 改变状态规则:选定16个把手 ...

  3. Office WORD如何输入长下划线

    选中一段文字,点击下划线按钮,可以添加下划线   同样,选中一段空格,点下划线,也可以添加下划线    

  4. Codeforces 344B Simple Molecules

    #include<bits/stdc++.h> using namespace std; int main() { int a,b,c; scanf("%d%d%d", ...

  5. 成员函数指针 C++ FAQ LITE — Frequently Asked Questions

    http://www.sunistudio.com/cppfaq/pointers-to-members.html C++ FAQ LITE — Frequently Asked Questions ...

  6. Idea 13 新建maven项目

    1.此时生成的maven项目没有web文件夹 file→New Project→Maven→Next→GID.AID (NewDemo)→Next→ProjectName(NewDemo)→Finis ...

  7. mysql学习笔记之mysql数据库的安装

    1.执行mysql安装包选择自己定义安装(安装路径不要带中文,否则安装会出错! ) 2.一个mysql想要操作成功须要有三部分:server端,数据段,数据. 3.server软件文件夹: 4.数据文 ...

  8. Redis实践系列丨Codis数据迁移原理与优化

    Codis介绍 Codis 是一种Redis集群的实现方案,与Redis社区的Redis cluster类似,基于slot的分片机制构建一个更大的Redis节点集群,对于连接到codis的Redis客 ...

  9. 3 TypeScript 语法特性

    一.类型注解(Type annotations) TypeScript 通过类型注解提供静态类型以在编译时启动类型检查,简单来说,就是指定数据类型,它会在代码运行的时候,对传入的数据进行数据类型匹配检 ...

  10. Django创建数据表

    Django中创建表. 用的django项目自带的sqlite数据库,创建完毕后将表注冊到jdango.admin,就能够在浏览器在管理了. 在django项目的models.py文件里: from  ...