在 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 编程中用空格读取行并分割单词的主要内容,如果未能解决你的问题,请参考以下文章