- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我之前的问题可以在这里找到(只是想向这个最有帮助的社区保证我不会试图垃圾邮件问题):
Evaluating a postfix Expression in C
我的问题涉及评估后缀表达式。假设我有一个后缀表达式,例如:
3 2 1 2 + ^ ^
我试图将这些值(所有用户输入的字符串)存储在堆栈中,并通过使用其他函数,我打算对其进行评估,最终结果是堆栈中唯一剩余的元素被弹出并呈现。在代码块中摆弄调试器几个小时后,我发现该函数没有在堆栈中存储任何内容。此外,当我使用函数检查所指向的字符是否是操作数时,尽管它是一个操作数,但它会忽略应该采取的适当操作。这是我使用的代码,其中还包含 isOperand 函数:
bool isOperand(char *str)
{
/** For value 3, str seems to be the entire character string
being "3 2 1 2 + ^ ^" **/
return isdigit(str) != 0;
}
int evaluatePostfix(char *postfixStr)
{
stack * s;
int x, y, z;
stackInit(&s);
while(postfixStr != NULL) {
/** For the first value 3, it SHOULD be an operand and
proceed to push it on the stack. But it just skips
this condition. **/
if(isOperand(postfixStr)) {
stackPush(&s, postfixStr);
}
if(isOperator(postfixStr) == 1) {
y = atoi(stackPop(&s));
x = atoi(stackPop(&s));
char *str = malloc(10 * sizeof(char));
sprintf(str, "%d", applyOperator(x, y, postfixStr));
stackPush(&s, str);
}
++postfixStr;
}
z = stackPop(s);
stackDestroy(&s);
return z;
}
我显然不知道如何只发送指针处的一个值。如果它是两位数甚至三位数,我怎样才能让程序识别呢?再次感谢您的宝贵时间,我当然感谢人们提供的所有帮助。
****编辑/找到解决方案****
好吧,由于作为“新用户”,我还不能回答自己的问题,所以我将编辑原始帖子,以便将来可能对其他人有用。
看起来标记化是合适的情况。通过使用
strtok(string, delimiter)
该函数将字符串分解为较小的字符串,并用空格之间的空字符分隔。我仍然不能 100% 确定是否是因为我使用了字符串空格分隔符(又名“”),但无论如何。
结束循环
token = strtok(NULL, " ");
而不是将指针增加 1 效果很好,因为它似乎在通过从原始字符串中完全删除较小的字符串部分将较小的字符串部分插入堆栈时直接修改它,从而获取原始字符串。虽然这不是一个好的做法(因为我应该创建原始字符串的副本以保留我认为的输入的完整性并修改副本),但我相信它适用于该项目的范围。我只是想分享我的发现,以防将来对任何人有用。另外,如果我的使用描述中有一些需要纠正的地方,无论如何,我很想知道。
最佳答案
您正在对指针调用 isdigit
,
return isdigit(str) != 0;
应该在受指点上调用,
return isdigit(*str) != 0; // or, equivalently: return isdigit(*str);
关于c - 评估 C 中的 PostFix 表达式(新问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9353702/
所以我的问题是我希望我的文本显示在页面的死 Angular 。我一直在尝试手动对齐它,但这似乎是一种糟糕的做法。我想要它,这样即使网页被调整为更小或者用户使用的是更小的屏幕,无序列表也会显示在屏幕的死
所以基本上,我有这段代码,它选择一个下拉菜单选项,然后按下它。我需要它按第一个选项,然后按第二个选项。 var x = document.getElementById("product-select"
我编写了我的第一个 C 程序。它去除 C 注释 ('//')。我将一个字符串传递给函数 strip_comments,创建一个与参数字符串大小相同的新字符串,然后我逐个复制一个字符,忽略注释。 这是代
我在运行下面代码中提到的清理名称实用程序时收到运行时错误 7 错误。我使用的是 512 GB 硬盘、8 GB RAM、I7 处理器,所以不应该是内存问题,但问题仍然会出现。 我的工作簿有 123188
我知道很多人都会问有关插件和回调的问题(我已经阅读了很多内容 - 这就是我到目前为止的方式),所以请耐心等待。我尝试了一个非常简单的隐藏/显示 Accordion 类型插件来解决常见问题,并成功地让它
请原谅我,如果之前已经介绍过,我搜索无济于事。 我有一个脚本可以查看目录以找到其中的文件。有一个条件行只查找具有特定扩展名的文件: if(strtolower(substr($file, -3)) =
使用链接列表扩展哈希表时会出现一些错误和警告。我想确保以下代码是正确的(扩展函数)并找出引发这些警告/错误的原因 编辑:感谢@nos,他注意到我的原型(prototype)缺少我提到的警告+错误。不幸
我已经搜索了网络,并且共识似乎是将$ {SDK_DIR}/usr/lib/libxml2添加到“Header Search Paths”中。我已经完成了此操作,并且可以在项目检查器中看到它扩展了,以更
很抱歉新手。 我想在 LinearLayout(垂直)中创建一个 View 元素列表。我创建了一个名为“category_list.xml”的 TableLayout 的 xml 布局
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and t
全新的 Xcode 版本,除了删除大量添加空函数调用的地方外,还引入了一个有趣的问题,用一段简单的代码绘制了一条大地路径: func drawPolyline(from startLocation:
我之前的问题可以在这里找到(只是想向这个最有帮助的社区保证我不会试图垃圾邮件问题): Evaluating a postfix Expression in C 我的问题涉及评估后缀表达式。假设我有一个
嘿嘿 我的声纳kotlin插件已启动并正在运行。我的RuleDefinitions放置在“规则”页面上,但是在分析某些Kotlin项目时,不会保存发现的问题。 我的传感器问题添加代码如下所示: pri
这是我在这里发表的第一篇文章。我是初学者。我正在开发一个 Spring Boot 应用程序。尝试了很多解决方案后,问题都没有得到解决。请帮忙(如果缺少任何代码片段,我会发送它。): 控制台: Erro
我是一名优秀的程序员,十分优秀!