源程序
#include <iostream> using namespace std; struct Stack { int tos; int stackarray[1000]; }; Stack S; void push(int a) { S.tos++; S.stackarray[S.tos] = a; } void pop() { if (S.tos == -1) cout << "false" << " "; else cout << S.stackarray[S.tos] << " "; S.tos--; } int main() { S.tos = -1; string cmd; cin >> cmd; if (cmd == "pop") { cout << "false"; return 0; } int number; cin >> number; push(number); while(S.tos >= -1) { cin >> cmd; if (cmd == "pop") pop(); else if (cmd == "push") { cin >> number; push(number); } } return 0; } //a.exe <A-1-in.txt >myoutput.txt
cmd
原因是cin遇到txt文件终止符EOF后仍未结束,具体可能与缓冲有关,还是在cin pop导致
在while循环加入判断
#include <iostream> using namespace std; struct Stack { int tos; int stackarray[1000]; }; Stack S; void push(int a) { S.tos++; S.stackarray[S.tos] = a; } void pop() { if (S.tos == -1) cout << "false" << " "; else cout << S.stackarray[S.tos] << " "; S.tos--; } int main() { S.tos = -1; string cmd; cin >> cmd; if (cmd == "pop") { cout << "false"; return 0; } int number; cin >> number; push(number); while(S.tos >= -1) { if(cin.eof()) break; cin >> cmd; if (cmd == "pop") pop(); else if (cmd == "push") { cin >> number; push(number); } } return 0; } //a.exe <A-1-in.txt >myoutput.txt
之后
cmd
注意这样做,命令行输入^Z还是有问题。
应该还是缓冲区问题。具体以后再说吧
fc a.txt b.txt比较不同
可能有空格