在 C 编程中用空格读取行并分割单词

Posted

技术标签:

【中文标题】在 C 编程中用空格读取行并分割单词【英文标题】:Reading line with spaces in C Programming and segmentating the words 【发布时间】:2022-01-16 01:04:06 【问题描述】:

我有类似于以下的输入:

约翰希 ID5 409-208

我需要能够读取输入并将输出组织在如下结构中:

姓名:约翰希 类型:ID5 身份证号码:409-208

但我正在努力寻找有关如何使用空格处理片段的文献。我承认,我对 C 很陌生。

【问题讨论】:

读取行,检测空格。 听起来像是您希望我们为您完成的家庭作业,不是吗? @GabrielStaples 我希望我有那个年龄。出于人员原因,我正在尝试学习这一点。 在这种情况下,如果您可以使用一些可编译的代码来更新您的问题,显示您获取输入,以及以什么代码形式,我会看看我是否可以返回这个问题并提供答案。 【参考方案1】:

用适当的长度声明变量并且:

scanf("%s %s %s", name, type, id);

【讨论】:

【参考方案2】:

如果您想了解如何处理单个字符,请查看下一部分。

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

int main()

    char mstring[] = "Hello World";
    char space = ' ';
    int a = 0;
    
    while ( a < strlen(mstring))
    
        if (mstring[a] == space)
        
            printf ("found space!");
        
        a++;
    

    return 0;

由于我的其他答案不可接受,这里是如何做到的。但是我认为如果您尝试编写一个基于空格返回每个单词的函数,您会学到很多东西。这取决于你想学什么。

#include <stdio.h>

int main()

    char mstring[] = "Johnhy ID5 409-208";
    char name[50];
    char type[50];
    char id[50] ;

    
    sscanf(mstring, "%s %s %s", name, type, id);
    printf("Name:%s\nType:%s\nID:%s\n", name, type, id);

    return 0;

【讨论】:

此代码不会产生 OP 想要的。另外,使用for 循环。 他想知道如何处理空格。我只是提供一个线索。这是我的程序,如果我更喜欢 while 循环,那么我会使用一个。 谢谢!这真的很有帮助,而且很容易理解。

以上是关于在 C 编程中用空格读取行并分割单词的主要内容,如果未能解决你的问题,请参考以下文章

编程练习笔记2

C ++计数功能词出现

java面试第四弹(算法和编程)思路

R语言读取的文本中的空格如何保留?

C ++从文本文件中读取行并编辑

从字符串 C++ 中读取单词,同时忽略空格、数字和符号。