gpt4 book ai didi

c - 如何标记 c 中的整行输入?

转载 作者:太空宇宙 更新时间:2023-11-04 07:39:24 24 4
gpt4 key购买 nike

我需要从 cmd 中解析一行,看起来像这样

"SOME WHITE SPACE" "var_name" "SOME WHITE SPACE" "var_value" "SOME WHITE SPACE"

我用 fgets 整行:

fgets(input_buf,MAX_LINE_LENGTH,stdin);

并尝试像这样标记化:

sscanf(input_buf,"%s", var_buff);

sscanf(input_buf+strlen(var_buff),"%s", var_val_buff);

sscanf(input_buf+(strlen(var_buff)+strlen(var_val_buff)+2),"%s", rest_line_buff);

if (strlen(rest_line_buff) == 0)

printf("error in usage\n");

我没有得到正确的值,因为空格的数量可能会有所不同。我如何标记输入行?

最佳答案

使用strtok ,如下面的示例程序所示:

#include <stdio.h>
#include <string.h>

int main ()
{
char sampleInput[] ="foo bar foo1 bar1 foo2 bar2";
char *token;
char *whiteSpace = " \t\n\f\r\v";
int isVariable = 1;

token = strtok(sampleInput, whiteSpace);
while (token != NULL)
{
if (isVariable)
printf("Variable = %s\n", token);
else
printf("Value = %s\n\n", token);
isVariable = isVariable ? 0 : 1;
token = strtok(NULL, whiteSpace);
}
return 0;
}

输出:

Variable = foo
Value = bar

Variable = foo1
Value = bar1

Variable = foo2
Value = bar2

关于c - 如何标记 c 中的整行输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5694032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com