EOF ctrl+z 停止
EOF为计算机术语End Of File的缩写。在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。在C标准库中,像getchar这样的数据读取函数返回一个与符号(宏)EOF相等的值来指明文件结束的情况发生,EOF的真实值与不同的平台有关(但通常是-1,比如在glibc中),并且不等于任何有效的字符代码。块读取函数返回读取的字节数,如果它小于要求读取的字节数,就会出现一个文件结束符。
“test.cpp”
#include <iostream>
using namespace std;
#include <stack>
bool Match(char c1,char c2)
{
if ((c1 == '{') && (c2 == '}'))
{
return true;
}
else if ((c1 == '[') && (c2 == ']'))
{
return true;
}
else if ((c1 == '(') && (c2 == ')'))
{
return true;
}
else
{
return false;
}
}
void test()
{
stack<char> s;
char c = '0';
while ((c = getchar()) != EOF)
{
switch(c)
{
case '{':
case '[':
case '(':
{
s.push(c);
}
break;
case '}':
case ']':
case ')':
{
if (s.empty())
{
cout<<"已有右括号不匹配"<<endl;
return;
}
if (Match(s.top(),c))
{
s.pop();
}
}
break;
default:
break;
}
}
if (s.empty() == false)
{
cout<<"左括号多余"<<endl;
}
else
{
cout<<"括号匹配"<<endl;
}
}
int main()
{
test();
system("pause");
return 0;
}
测试用例