如何执行C ++程序

时间:2014-04-15 21:52:53

标签: c++

我有一个简单的C ++程序,可以在Linux上正常运行,但是当我尝试在Windows上执行它时它会给我这样的东西:

  

NTVDM CPU遇到非法指令CS:055 IP:0185 OP:00 00

这是该计划的代码:

#include <iostream>
using namespace std;
int main()
{
    int n;
    do {cout<<"Enter 2 OR 3 : ";cin>>n;} while (n<2 || n>3);
    int b;
    cout<<"Enter the number of characters : ";cin>>b;cout<<endl;
    char t[b];
    cout<<"Enter your characters : ";cin>>t;cout<<endl;
    string TA =t;
    if(n==2) {
        for(int r=0;r<b;r++){
            for(int i=0;i<b;i++){
                 cout<<TA[r]<<TA[i]<<endl;
            }
        }
    }
    else {
        for(int r=0;r<b;r++){
            for(int i=0;i<b;i++){
                for(int k=0;k<b;k++) {
                    cout<<TA[r]<<TA[i]<<TA[k]<<endl;
                }
            }
        }
    }
    cout<<"All Right Reserved ©"<<endl;
    return 0;
}

1 个答案:

答案 0 :(得分:2)

除了在ISO C ++中不支持可变长度数组并且可能在GCC中通过扩展允许这样的事实之外,您可以从缓冲区溢出开始:数组t应该至少t[b+1]长,即便如此,你仍然相信用户不要输入他们承诺的更多角色。

既然您已将t分配给std::stringTA),为什么不直接将输入读入TA本质安全的内容(更不用说了)有效的ISO C ++)?

string TA ;
cout << "Enter your characters : " ;
cin >> TA ;