C程序设计语言第二版习题2-4

简介: 编写函数squeeze(s1, s2), 把字符串s1中与字符串s2中字符匹配的所有字符都删除

问题描述

编写函数squeeze(s1, s2), 把字符串s1中与字符串s2中字符匹配的所有字符都删除。

问题拆分

  • 主函数main
  • 接收用户输入字符串函数 get_line (注意不能按照书本上的getline,因为此函数已在stdio.h 中定义了)
  • 从s1中移除s2中包含的字符 函数 squeeze

代码实现

#include<stdio.h>

#define LINE 1000

int get_line(char s[]);
int squeeze(char s[], char search[]);

int main()
{
    char line[LINE];
    char search[LINE]; //要过滤的字符串 
    int len;

    printf("Type the search:\n");
    get_line(search); 
    printf("Type the subject:\n");
    while(len = get_line(line) > 0){
        squeeze(line, search);
        printf("The result is: %s \n", line);
    }
    return 0;
}

//接收一行字符串 
int get_line(char s[])
{
    int i;
    char c;

    for(i = 0; i < LINE - 1 && (c = getchar()) != EOF && c != '\n'; i++){
        s[i] = c;
    }
    s[i] = '\0';
    return i;
}

/*
 * 核心方法,从目标字符串移除指定字符 
 * 从subject中逐个剔除search中的字符 
 */
int squeeze(char subject[], char search[])
{
    int i, j, k;
    char c;
    k = 0;
    while((c = search[k++]) != '\0'){ //逐个移除 
        for(i = j = 0; subject[i] != '\0'; i++){
            if(subject[i] != c){
                subject[j++] = subject[i];
            }
        }
        subject[j] = '\0';
    }
    return 0;
}
目录
相关文章
|
2月前
|
程序员 编译器 C语言
【C语言程序设计】编写简单的C程序
【C语言程序设计】编写简单的C程序
34 0
|
10月前
|
存储 自然语言处理 算法
C语言总结(第2章算法——程序的灵魂 第3章最简单的C程序设计——顺序程序设计 第4章选择结构程序设计)
算法(algorithm)是解决一系列问题的清晰指令,也就是,能对一定规范的输入,在有限的时间内获得所要求的输出。 6是解决做什么和怎么做的问题。简单来说,算法就是解决一个问题的具体方法和步骤。算法是程序的灵魂。
651 0
|
程序员 C语言
【维生素C语言】第八章 - 实用调试技巧(四)
一名优秀的程序员是一名出色的侦探,每一次调试都是尝试破案的过程……本章将详细带你学习实用调试技巧!正式开启DEBUG
52 1
【维生素C语言】第八章 - 实用调试技巧(四)
|
程序员 C语言 C++
【维生素C语言】第八章 - 实用调试技巧(二)
本章将对结构体进行简单的学习,后期在自定义类型讲解章节会进一步学习结构体。由于本章知识点较少,在文章的最后对函数栈帧的创建与销毁进行一个简要的介绍。
83 0
【维生素C语言】第八章 - 实用调试技巧(二)
|
程序员 编译器 C语言
【维生素C语言】第八章 - 实用调试技巧(三)
一名优秀的程序员是一名出色的侦探,每一次调试都是尝试破案的过程……本章将详细带你学习实用调试技巧!正式开启DEBUG
60 0
【维生素C语言】第八章 - 实用调试技巧(三)
|
数据安全/隐私保护 C语言
C语言第四章 分支结构程序设计习题2【修改版,看水印】
C语言第四章 分支结构程序设计习题2【修改版,看水印】
98 0
C语言第四章 分支结构程序设计习题2【修改版,看水印】
C程序设计语言第二版习题4-1
编写一个函数strrindex(s, t),用于返回字符串t在s中最右出现的位置,如果 s中不 包含t,那么返回-1。
3645 0
|
机器学习/深度学习 算法 JavaScript
C程序设计语言第二版习题3-6
修改itoa函数,使得该函数可以接收三个参数。其中,第三个参数为最小字段宽度。为了保证转换后所得的结果至少具有第三个参数指定的最小宽度,在必要时应在所得结果的左边填充一定的空格。
731 0
|
机器学习/深度学习 算法 JavaScript
C程序设计语言第二版习题3-5
编写函数itob(n, s, b) ,用于把整数n转换成以b为基数的字符串并存到字符串s中。例如, itob(n, s, 16) 表示将n转换成16进制数,并存入s中。
937 0
|
机器学习/深度学习 JavaScript
C程序设计语言第二版习题3-4
在数的反码表示中,上述的 itoa 函数不能处理最大的负数,即 n 等于-2^(字长-1) 的情况。请解释其原因。修改该函数,使它在任何机器上运行时都能打印出正确的值。
693 0