我已经用堆栈编写了一个平衡的符号检查器。其他一切都有效,我已经完全测试了pop push destroy isempty等所有功能。问题是我的fgets用法。
//fgets
char input[10];
printf("Enter a 10 character input for balance: ");
fgets(input, 10, stdin);
"不工作的部分"是以下代码
int i = 0;
for (i < 10; i++;){
if (input[i] == '{' || input[i] == '[' || input[i] == '(' || input[i] == '<'){
push(&st2, input[i]);
}
}
我知道我的推送功能正在运行,因为我已将其作为独立测试。类似的东西:
push(&st2, '{');
当我尝试显示我的堆栈并正确推送值时,完全正常。 在这一点上,我认为带有fgets的初始char数组只是没有正确初始化,或者我已经设法搞砸了if / for循环。
当我运行程序时,if语句条件永远不会被满足,即使我键入{[(或&lt; into stdin。当我尝试打印输入[10] char数组时,我的程序也崩溃了。