首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用sscanf从字符串获取输入

使用sscanf从字符串获取输入
EN

Stack Overflow用户
提问于 2020-04-09 21:55:36
回答 1查看 59关注 0票数 0

我从用户那里获得以下字符串作为输入:"id,name,age,grade,country,city"

-id由数字0-9组成只有-name由a-zA-z字母组成-grade由数字0-9组成只有-country由a-zA-z字母、空格和短划线组成。-city由a-zA-z字母、空格和'-‘破折号组成。

我正在尝试将每个字段指定为它自己的字符串。

我的代码是:

代码语言:javascript
复制
char id[MAX_STRING_SIZE], name[MAX_STRING_SIZE], grade[MAX_STRING_SIZE], age[MAX_STRING_SIZE],
                    country[MAX_STRING_SIZE],city[MAX_STRING_SIZE];

sscanf(userInput,SEPARATOR,id,name,grade,age,country,city);

其中,userInput"id,name,age,grade,country,city"形式的字符串

const char SEPARATOR[] = "%[^,],%[^,],%[^,],%[^,],%[^,\n],%s";

但是,此代码在某些输入中断点,例如"id,,age,grade,country,city"

EN

回答 1

Stack Overflow用户

发布于 2020-04-09 22:36:34

这里是你可以做的事情,而不是sscanf,正如@WilliamPursell所建议的那样

代码语言:javascript
复制
char* field[6];
field[0] = userInput;

for (int n=0, i=1; userInput[n] && (i < sizeof(field)/sizeof(field[0])); ++n)
{
    if (userInput[n] == ',')
    {
        userInput[n] = '\0';
        field[i] = &userInput[n+1];
        ++i;
    }
}

可能需要先制作userInput的副本

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61122803

复制
相关文章

相似问题

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