繁体   English   中英

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

[英]using sscanf to get input from a string

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

-id 仅由数字 0-9 组成 -name 由 a-zA-z 字母组成 -grade 仅由数字 0-9 组成 -country 由 a-zA-z 字母、空格和“-”破折号组成。 -city 由 a-zA-z 字母、空格和“-”破折号组成。

我正在尝试将每个字段拆分为自己的字符串。

我的代码是:

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"

正如@WilliamPursell 所建议的,这是您可以做的事情,而不是 sscanf

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM