gpt4 book ai didi

c - 用几个分隔符之一分割字符串?

转载 作者:行者123 更新时间:2023-11-30 20:00:54 24 4
gpt4 key购买 nike

我有这个

A > B ,或A < B ,或A==B ,

使用strtok我将销毁数据,我的目标是获得某种可以检查的结构:

  1. 我有什么样的分隔符
  2. 可以访问其两侧(A 和 B)。

所以:

if ( > )
do something with A and B
else if (==)
do something with A and B

我知道这听起来很简单,但它总是很麻烦。

编辑:

我所做的是这个,对于这项任务来说似乎太长了:

for (int k=1;k<strlen(p);k++)
{

char left[4]="" ;
char right[12]="" ;



switch(p[k])
{


case '>' :
{
long num =strstr(p,">") - p ;
strncpy(left,p,num);
strncpy(right,p+num+1,strlen(p)-num-1);


break;
}



case '<' :
{
long num =strstr(p,"<") - p ;
strncpy(left,p,num);
strncpy(right,p+num+1,strlen(p)-num-1);


break;
}


case '=' :

{
long num =strstr(p,"=") - p ;
strncpy(left,p,num);
strncpy(right,p+num+1,strlen(p)-num-1);


break;
}

case '!' :
{
long num =strstr(p,"!") - p ;
strncpy(left,p,num);
strncpy(right,p+num+1,strlen(p)-num-1);


break;
}

default :
{}
}


}

最佳答案

对于您只想解析由两个操作数和一个运算符组成的简单字符串的简单情况,没有“表达式”这可能会起作用

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

int
main(void)
{
const char *string = "A > B";
char lho[100];
char op[3];
char rho[100];
if (sscanf(string, "%99[^=><]%2[=><]%99[^=><]", lho, op, rho) == 3) {
fprintf(stdout, "left hand operand: %s\n", lho);
fprintf(stdout, "operator: %s\n", op);
fprintf(stdout, "right hand operand: %s\n", rho);
}
return 0;
}

这绝不是最好的方法,它只是表明您可以使用它。另外,我没有想太多,我编写代码是为了向您展示可能的解决方案。我实际上不喜欢它,也不会使用它

关于c - 用几个分隔符之一分割字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38675046/

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