我正在解决一些项目练习。我遇到了这句话,我需要澄清一下。程序要求用户输入括号和/或括号,并检查它们是否嵌套。首先,我需要按如下方式阅读用户的输入:
while( (ch = getchar()) != '\n' ){
// Do analysis on ch.
}
但是我遇到了下面的句子,这对我来说并不清楚。
当程序读取换行符时,请检查是否 堆栈是空的
根据我上面提到的while(),我永远不会抓到新的线条角色。我怎样才能克服这个问题?我唯一想到的是在完成后检查堆栈大小,如果是这样,则意味着用户输入一个新的行字符,导致while()循环终止。但是这个解决方案并没有抓住新的产品线,而是一种解决方法。任何建议!
答案 0 :(得分:3)
你可以这样做:
while( (ch = getchar()) != '\n' && ch != EOF){
// Do analysis on ch.
}
if (ch=='\n') {
//check your paranthesis stack
}
可能你应该在\n
和EOF。
答案 1 :(得分:0)
我唯一想到的是在完成后检查堆栈大小,如果是这样,则表示用户输入一个新的行字符,导致while()循环终止。
这是完全正确的。
您的代码应该是
while ( (ch = getchar()) != '\n' ) {
// Do analysis on ch.
}
// check whether stack is empty
因为在循环结束时,您知道ch
包含换行符。