gpt4 book ai didi

c - 如何让我的程序只检查括号内的内容?

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

该程序的目标是能够提取字符串 (char) 中的整数,前提是它们位于一组括号内。如果字符串不符合这些要求,我还想打印出一条错误消息。

例如:char str = "( 1 2 3)";这会打印出它找到了整数 1、2 和 3。但是假设 str 是 char str = "1 2 3( 4 5 6); 会返回对我的错误函数的调用,因为它有格式错误。如果字符串包含任何非数字或空格的其他内容,它也应该打印错误。最后,假设检查括号内的内容,直到找到结束括号。

目前,我可以搜索任何字符串并提取整数,但我无法弄清楚如何确定除数字之外是否还有其他任何内容,并且只能检查括号内的内容。

void scanlist(char *str)
{
char *p = str;
while (*p) {
if ((*p == '-' && isdigit(p[1])) || (isdigit(*p))) {
int val = strtol(p, &p, 10);
on_int(val);
}
else {
p++;
}

}

我试过在 while 之后添加另一个 if 语句,看看它是否以 '(' 开头,但它没有做任何事情。拜托,谢谢!

最佳答案

您需要就您的立场保持某种状态。例如:

int inside_paren = 0;
while (*p) {
switch (*p) {
case '(':
if (inside_paren)
/* error */
inside_paren = 1;
break;
case ')':
/* ... */
inside_paren = 0;
break;
default:
if (!isdigit(*p) || !inside_paren)
/* error */
}
}

关于c - 如何让我的程序只检查括号内的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14968248/

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