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

我有类似于以下的输入:

约翰希 ID5 409-208

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

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

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

【问题讨论】:

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

标签: c string c-strings


【解决方案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 循环,那么我会使用一个。
    • 谢谢!这真的很有帮助,而且很容易理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多