gpt4 book ai didi

c - 将字符串分隔为多个整数

转载 作者:行者123 更新时间:2023-11-30 19:47:59 25 4
gpt4 key购买 nike

请问我该如何转换:

char infix[] = "123+354*87/156=" (can be variable)

如何从该字符串中分离数字(为整数,如 123 354 87 156,否为 1 2 3 3 5 4...)和字符(chars + */)。

最佳答案

我想您需要构建一个简单的计算器...如果您打算从头开始这样做,您将需要 Compiling Theory 的一些背景知识,并使用有限状态机、解析等概念。

但是有很多工具可以使这项任务变得更容易:lex/yacc (C)、flex/bison (C++) 或 COCO/R(许多语言)。

这是一个简单的 C 示例,它将字符串拆分为数字 (state=NUM) 和符号 (state=SYM):

#include <string.h>
#include <ctype.h>

#define NONE 0
#define NUM 1
#define SYM 2

int _tmain(int argc, char* argv[])
{
char infix[] = "123+354*87/156=";
char buffer[10];
int i, j;
int state = NONE;
char c;
i = 0;
j = 0;
while(i < strlen(infix)) {
c = infix[i];
switch(state) {
case NUM:
if ( isdigit(c) ) {
buffer[j++] = c;
buffer[j] = 0;
i++;
}
else {
printf("%s\n", buffer);
j = 0;
state = NONE;
}
break;
case SYM:
i++;
printf("%c\n", c);
state = NONE;
break;
case NONE:
if ( isdigit(c) ) state = NUM;
else state = SYM;
break;
}
}
getchar();
return 0;
}

关于c - 将字符串分隔为多个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20104407/

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