C语言中删除句子中所有出现的单词的函数

2024-01-21

我有这段代码,它将删除句子中第一次出现的单词:

#include "stdio.h"
#include "string.h"

int delete(char *source, char *word);

void main(void) {

    char sentence[500];
    char word[30];



    printf("Please enter a sentence. Max 499 chars. \n");
    fgets(sentence, 500, stdin);

    printf("Please enter a word to be deleted from sentence. Max 29 chars. \n");
    scanf("%s", word);

    delete(sentence, word);

    printf("%s", sentence);
}


int delete(char *source, char *word) {

    char *p;
    char temp[500], temp2[500];

    if(!(p = strstr(source, word))) {
        printf("Word was not found in the sentence.\n");
        return 0;
    }

    strcpy(temp, source);
    temp[p - source] = '\0';
    strcpy(temp2, p + strlen(word));
    strcat(temp, temp2);    
    strcpy(source, temp);
    return 1;
}

我如何修改它以删除给定句子中该单词的所有出现?在这种情况下我还能使用 strstr 函数吗?

谢谢您的帮助!

也可以采用完全不同的方式来做到这一点。

附:这听起来像是一个家庭作业问题,但这实际上是一个过去的期中考试问题,我想解决它来为我的期中考试做准备!

作为一个附带问题,如果我使用fgets(word, 30, stdin)代替scanf("%s", word),它不再起作用并告诉我在句子中找不到这个词。为什么?


尝试以下操作

#include <stdio.h>
#include <string.h>

size_t delete( char *source, const char *word ) 
{
    size_t n = strlen( word );
    size_t count = 0;

    if ( n != 0 )
    {
        char *p = source;

        while ( ( p = strstr( p, word ) ) != NULL ) 
        {
            char *t = p;
            char *s = p + n;
            while ( ( *t++ = *s++ ) );
            ++count; 
        }
    }

    return count;
}

int main( void ) 
{
    char s[] = "abxabyababz";

    printf( "%zu\n", delete( s, "ab" ) );
    puts( s );

    return 0;
}

输出是

4
xyz

至于关于的问题fgets然后它在字符串中包含换行符。您必须将其从字符串中删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言中删除句子中所有出现的单词的函数 的相关文章

随机推荐

  • 不使用 webpackJsonp 编译 Webpack typescript

    是否可以使用webpack进行打包而不使用webpack模块加载 我有一个可以使用 webpack 的所有内容的应用程序 在这个应用程序旁边我有一个小的打字稿文件test ts应该被编译 缩小等 但是输出应该是一个简单的js文件 没有被包装
  • iPhone应用程序启动时间指南[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 请指出 iPhone 应用程序启动时间指南 我发现有大约 24 秒的硬性限制 如果应用程序当时未启动
  • 读取EDI格式文件

    我是 EDI 新手 我有一个问题 我读到 通过查看 ISA 行的最后 3 个字符 您可以获得有关 EDI 格式的大部分信息 如果每个 EDI 都使用换行符来分隔实体 那么这很好 但我发现许多都是单行文件 其中使用任意数量的字符作为换行符 我
  • 使用 pandas apply 时的异常处理

    我可以使用 series str extract 从 pandas 系列中提取子字符串 ds pd Series 1A apple 1B pear 3C orange grape ds str extract d 1 expand Fals
  • Broom.mixed exp 模型预测

    我想请求一些帮助来绘制我的模型的预测值以及 lmer 估计生成的方程 所以 我得到的数据是不同老鼠在不同日期的质量体积 每只老鼠都有不同的时间点来测量该体积 那么 我使用的模型是 m1 lt lmer lVolume Country Day
  • AWS Lambda - NAT 网关互联网访问导致超时

    我有一个 AWS Lambda 函数 检查 Redis Elasticache 实例 如果在缓存中未找到该项目 则转至 Google Places API 服务 Redis 实例位于私有子网 因此 为了获取它 我添加了 VPC 和实例所在的
  • Android:ping:icmp 打开套接字:不允许操作

    是否可以在没有 root 访问权限的情况下在 Android 4 3 上执行 ping 有些人建议 sudo chmod u s system bin ping http ben goodacre name tech Ping icmp o
  • @media Chrome 下打印文字阴影

    当我添加 css 规则时 文字阴影 对于未显示在其中的文本 媒体打印 另存为PDF 并且它不适用于特殊情况Chrome 它在 IE11 下工作得很好 但在 Chrome 下 不行 这让我非常非常失望 这是简单的文本阴影示例 item tex
  • 仅在添加预先存在的数据后才始终删除闪亮的 CRUD 应用程序中的第一行

    我被困住了 需要帮助 我正在按照这个要点工作https gist github com gluc d39cea3d11f03542970b https gist github com gluc d39cea3d11f03542970b 基本
  • 如何在 C++ 中创建类对象的向量?

    我正在尝试使用 C 中的向量创建一个简单的堆栈 这是代码 include
  • 在powershell中将Arraylist转换为字符串

    我正在尝试从变量中 grep 一些数据 Select String inputObject patternstring Pattern regex AllMatches Matches Value OutVariable outputVal
  • 故事板和 Segue - 传递数据我做得好吗?

    我正在使用情节提要和转场 我想从 联系人列表 tableView 切换到 个人资料视图 ScrollView 三个问题 这是最好的方法 更干净和漂亮 吗 为什么 当我这样做时 ProfileViewController aProfileVi
  • 从 if else 转换为 switch 语句

    我有以下 if else if else 构造 我只是好奇如何将此类构造转换为 switch 语句 var emailSubject email subject toLowerCase if emailSubject indexOf acc
  • 用箭头标记直方图箱

    我有一个直方图 可以用下面的 MWE 复制 import pandas as pd import matplotlib pyplot as plt import seaborn as sns import numpy as np pd Se
  • npm 添加根 CA

    我正在寻找一种将自定义 CA 添加到 NPM 的方法 这样我就可以使用所述证书 内部 git 服务器 从某个位置下载 而不必使用以下命令取消所有 CA 检查 npm config set strict ssl false 有什么方法可以实现
  • 使用 hive 出现异常 java.lang.NoClassDefFoundError: org/apache/tez/dag/api/SessionNotRunning

    配置hadoop后 我可以运行 hdfs 然后安装 hive 并编辑conf文件使其默认在tez上运行 但直接使用 hive 时遇到一些特殊问题 hive Exception in thread main java lang NoClass
  • 由于参数失败,调用与互斥体配对。无法将互斥锁插入 unordered_map

    下面是一个错误 std mutex mtx auto t std make pair std string hello mtx 但下面的不是吗 std mutex mtx auto t std make pair std string he
  • Oracle Sql 中的列行转置

    您好 我有一个简单的查询给出了这个结果 我想修改如下 Name 列成为列标题 studentID 列成为第一行 WITH t AS SELECT 1001 studentid john NAME FROM dual UNION ALL SE
  • 将十六进制字符串(char[])转换为int?

    我有一个 char 其中包含诸如 0x1800785 之类的值 但我想要为其提供该值的函数需要一个 int 如何将其转换为 int 我四处搜寻但找不到答案 谢谢 你有没有尝试过strtol strtol 将字符串转换为长整数 http pu
  • C语言中删除句子中所有出现的单词的函数

    我有这段代码 它将删除句子中第一次出现的单词 include stdio h include string h int delete char source char word void main void char sentence 50