如何执行C++程序

How to executing C++ programme

本文关键字:C++ 程序 执行 何执行      更新时间:2023-10-16

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

NTVDM CPU阶段遇到非法指令CS:055 IP:0185 OP:000

这是程序的代码:

#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;
}

除了ISO C++中不支持可变长度数组,并且GCC中的扩展可能允许可变长度数组之外,您还需要从缓冲区溢出开始:数组t的长度至少应为t[b+1],即使这样,您也相信用户不会输入他们承诺的更多字符。

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

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