如何在此方案中检测新行

时间:2017-09-23 17:30:35

标签: c

我正在解决一些项目练习。我遇到了这句话,我需要澄清一下。程序要求用户输入括号和/或括号,并检查它们是否嵌套。首先,我需要按如下方式阅读用户的输入:

while( (ch = getchar()) != '\n' ){
     // Do analysis on ch. 
}

但是我遇到了下面的句子,这对我来说并不清楚。

  

当程序读取换行符时,请检查是否   堆栈是空的

根据我上面提到的while(),我永远不会抓到新的线条角色。我怎样才能克服这个问题?我唯一想到的是在完成后检查堆栈大小,如果是这样,则意味着用户输入一个新的行字符,导致while()循环终止。但是这个解决方案并没有抓住新的产品线,而是一种解决方法。任何建议!

2 个答案:

答案 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包含换行符。