首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要解析字符串的帮助

需要解析字符串的帮助
EN

Stack Overflow用户
提问于 2011-08-05 00:25:32
回答 2查看 458关注 0票数 0

我需要一些解析一行文本的帮助。正在分析的文本行是用户输入。

我正试图解析其中含有管道的东西。

例如: hello @一二

我可以在管道前得到进入ArgList的单词。但不知道如何在管道后将单词输入ArgList2。管道symobol不需要存储在任何地方。

基本上,我如何得到以下信息?

代码语言:javascript
复制
ArgList[0] = hello
ArgList[1] = world

ArgList2[0] = one
ArgList2[1] = two

代码语言:javascript
复制
int main(void)
{

char *ArgList[MAX_ARG_LENGTH];
char *ArgList2[MAX_ARG_LENGTH];

char buf[MAX_BUF_LENGTH];

int i = 0


printf("> ");

if(!fgets(str, MAX_BUF_LENGTH, stdin))
perror("fgets error");

ArgList[i] = strtok(bufstr, " \n");

while(ArgList[i] != NULL)
{
     printf("%s", ArgList[i]);

     i++;
     ArgList[i] = strtok(NULL, " \n");
 }

return 0;
}

如有任何建议,将不胜感激。我应该首先将整个用户输入字符串标记为ArgList,然后将管道符号之后的所有内容移动到ArgList2中吗?

做这件事最好的方法是什么?

EN

Stack Overflow用户

回答已采纳

发布于 2011-08-05 00:35:24

我会这样做:

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

int main(void)
{

char buf[30] = "hello world | one two";

char *str = buf;

char *str1 = strsep(&str, "|");
char *str2 = strsep(&str, "\n");

printf("\nstr1 = %s and str2 =%s \n", str1, str2);
return 0;
}

注意:你的现在应该知道你想要什么样的事情了。

票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6950145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档