首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在没有指针的情况下提取C语言句子的前两个单词

可以通过以下步骤实现:

  1. 定义一个字符数组来存储输入的句子。
  2. 使用C语言的字符串处理函数,如fgets()scanf(),从标准输入中获取句子并存储到字符数组中。
  3. 创建一个整型变量wordCount并初始化为0,用于记录当前已提取的单词数量。
  4. 创建一个字符指针currentWord并指向字符数组的起始位置。
  5. 使用循环遍历字符数组中的每个字符,直到遇到句子结尾的空字符\0
  6. 在循环中,检查当前字符是否为空格或制表符,如果是,则将其替换为空字符\0,表示当前单词的结束。
  7. 在循环中,检查当前字符是否为字母或数字,如果是且前一个字符为空字符或为句子起始位置,则将currentWord指针指向当前位置,表示当前单词的开始。
  8. 在循环中,检查当前字符是否为字母或数字,如果是且前一个字符为空格或制表符,则将wordCount加1,表示已提取一个单词。
  9. 在循环中,检查wordCount是否达到2,如果是,则跳出循环。
  10. 在循环结束后,currentWord指针指向第一个单词的起始位置,第二个单词的起始位置即为currentWord指针后面的位置。
  11. 使用C语言的字符串处理函数,如printf()puts(),输出提取到的前两个单词。

以下是一个示例代码:

代码语言:txt
复制
#include <stdio.h>

int main() {
    char sentence[100];
    printf("请输入一个句子:");
    fgets(sentence, sizeof(sentence), stdin);

    int wordCount = 0;
    char* currentWord = sentence;

    for (int i = 0; sentence[i] != '\0'; i++) {
        if (sentence[i] == ' ' || sentence[i] == '\t') {
            sentence[i] = '\0';
        }
        else if ((i == 0 || sentence[i - 1] == ' ' || sentence[i - 1] == '\t') && (sentence[i] >= 'a' && sentence[i] <= 'z' || sentence[i] >= 'A' && sentence[i] <= 'Z' || sentence[i] >= '0' && sentence[i] <= '9')) {
            currentWord = &sentence[i];
            wordCount++;
        }

        if (wordCount == 2) {
            break;
        }
    }

    printf("前两个单词为:%s %s\n", currentWord, currentWord + strlen(currentWord) + 1);

    return 0;
}

这段代码通过遍历输入的句子,将空格或制表符替换为空字符来分割单词,并使用currentWord指针记录每个单词的起始位置。当提取到两个单词后,循环结束并输出这两个单词。请注意,这段代码假设输入的句子不超过100个字符,并且单词之间只有一个空格或制表符的分隔。如果输入的句子超过了数组的大小或者单词之间有多个空格或制表符的分隔,可能会导致提取结果不准确。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Nature neuroscience:利用encoder-decoder模型实现皮层活动到文本的机器翻译

    距离首次从人脑中解码语言至今已有十年之久,但解码语言的准确性和速度仍然远远低于自然语言。本研究展示了一种通过解码皮层脑电获得高准确率、高自然程度语言的方法。根据机器翻译的最新进展,我们训练了一个递归神经网络,将每个句子长度下诱发的神经活动序列编码为一个抽象的表达,然后逐字逐句地将这个抽象表达解码成一个英语句子。对每个参与者来说,数据包括一系列句子(由30-50个句子多次重复而来)以及约250个置于大脑皮层的电极记录到的同步信号。对这些句子的解码正确率最高可以达到97%。最后,本研究利用迁移学习的方法改进对有限数据的解码,即利用多名参与者的数据训练特定的网络层。本研究发表在Nature neuroscience杂志。

    01

    养良好C语言编程风格,编优质C语言代码,这才是C语言的开始

    个人c语言编程风格总结 总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的。首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的。 一件事情,做成和做好中间可能隔了十万八千里。 同样的,代码的质量也极大程度上反映了编程者的水平高低。为了让大家从学习的开始就养成良好的编程习惯,创作出优质的代码,实验室编辑这个文档,作为大家编程的参考,同时也是对以后编程风格的硬性规定。 对于一个团队来讲,制定统一的编程规范,好处是显而易见的。通常一个项目是由多个成员

    05

    一周论文 | 基于知识图谱的问答系统关键技术研究#4

    作者丨崔万云 学校丨复旦大学博士 研究方向丨问答系统,知识图谱 领域问答的基础在于领域知识图谱。对于特定领域,其高质量、结构化的知识往往是不存在,或者是极少的。本章希望从一般文本描述中抽取富含知识的句子,并将其结构化,作为问答系统的知识源。特别的,对于不同的领域,其“知识”的含义是不一样的。有些数据对于某一领域是关键知识,而对于另一领域则可能毫无意义。传统的知识提取方法没有考虑具体领域特征。 本章提出了领域相关的富含知识的句子提取方法,DAKSE。DAKSE 从领域问答语料库和特定领域的纯文本文档中学习富

    08

    入门 NLP 项目前,你必须掌握哪些理论知识?

    今年一月开始,我一直在从事一个从非结构化的文本中提取信息的项目。在开始这个项目之前,我对自然语言处理(NLP)领域一无所知。当我刚开始研究这个领域时,我很快就找了一本名为「Python 自然语言处理」的书(图书查阅地址:https://www.nltk.org/book/)。这本书对于我来说过于理论化了,但其中的知识基本是正确的,因此它对我来说仍然是无价的资源。接下来,我发现了 Dipanjan Sarkar 编写的「Python 文本分析」(图书查阅地址:https://www.apress.com/gp/book/9781484243534),并从头到尾通读了此书。这本书真的太棒了,它教会了我入门 NLP 项目所需的所有技术技能。最近,此书的第二版(https://www.apress.com/gp/book/9781484243534)也面世了,对上个版本进行了大量的扩充。

    02

    入门 NLP 前,你必须掌握哪些基础知识?

    今年一月开始,我一直在从事一个从非结构化的文本中提取信息的项目。在开始这个项目之前,我对自然语言处理(NLP)领域一无所知。当我刚开始研究这个领域时,我很快就找了一本名为「Python 自然语言处理」的书(图书查阅地址:https://www.nltk.org/book/)。这本书对于我来说过于理论化了,但其中的知识基本是正确的,因此它对我来说仍然是无价的资源。接下来,我发现了 Dipanjan Sarkar 编写的「Python 文本分析」(图书查阅地址:https://www.apress.com/gp/book/9781484243534),并从头到尾通读了此书。这本书真的太棒了,它教会了我入门 NLP 项目所需的所有技术技能。最近,此书的第二版(https://www.apress.com/gp/book/9781484243534)也面世了,对上个版本进行了大量的扩充。

    01

    ACL2016最佳论文:CNN/日常邮件阅读理解任务的彻底检查

    摘要 NLP尚未解决的核心目标是,确保电脑理解文件回答理解问题。而通过机器学习系统,解决该问题的一大阻碍是:人类-注释数据的可用性有限。Hermann等人通过生成一个超过百万的实例(将CNN和日常邮件消息与他们自己总结的重点进行配对)来寻求解决方案,结果显示神经网络可以通过训练,提高在该任务方面的性能。本文中,我们对这项新的阅读理解任务进行了彻底的检测。我们的主要目标是,了解在该任务中,需要什么深度的语言理解。一方面,我们仔细的手动分析问题小的子集,另一方面进行简单的展示,在两个数据集中,细心的设计系统,就

    04

    【技术白皮书】第三章 - 2 :关系抽取的方法

    由于传统机器学习的关系抽取方法选择的特征向量依赖于人工完成,也需要大量领域专业知识,而深度学习的关系抽取方法通过训练大量数据自动获得模型,不需要人工提取特征。2006年Hinton 等人(《Reducing the dimensionality of data with neural networks》)首次正式提出深度学习的概念。深度学习经过多年的发展,逐渐被研究者应用在实体关系抽取方面。目前,研究者大多对基于有监督和远程监督2种深度学习的关系抽取方法进行深入研究。此外,预训练模型Bert(bidirectional encoder representation from transformers)自2018年提出以来就备受关注,广泛应用于命名实体识别、关系抽取等多个领域。

    03
    领券