почему у меня ошибка шины 10, когда я ставлю cout<<""<

#c #dynamic #char #bus-error

Вопрос:

Я написал код, но есть одна проблема. Когда я cout<<""<<endl; выхожу, у меня ошибка шины: 10. Как я могу решить эту проблему. Это мой код:

 #include <iostream>
#include <sstream>
#include <cstdlib>
#include <cstdlib>
#include <cstring>
#include <cstdlib>
#include <cstring>
#include <assert.h>
#include <ctime>
#include <sstream>
#include <iostream>
#include <iomanip>
using namespace std;
char* rotate(char const* a, int b)
{
    char* r;
    for (int i = 0; i < int(strlen(a)); i  ) {
        if (i >= int(strlen(a)) - b) {
            r[i] = a[i - int(int(strlen(a)) - b)];
        }
        else if (i   b < 0) {
            r[i] = a[int(strlen(a)   b)];
        }
        else {
            r[i] = a[i   b];
        }
    }
    r[int(strlen(a))] = '';
    return r;
}
char* Crypt(char* Input, bool Encrypt, int InitialRotation, int Rotation)
{
    char const* Table;
    try {
        Table = new char[size_t(strlen(Table))];
    }
    catch (...) {
        throw "No Memory";
    };
    char* a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    try {
        a = new char[size_t(strlen(a))];
    }
    catch (...) {
        throw "No Memory";
    };
    char* ActualTable;
    try {
        ActualTable = new char[size_t(strlen(ActualTable))];
    }
    catch (...) {
        throw "No Memory";
    };
    int Offset = InitialRotation;
    char* Resu<
    try {
        Result = new char[size_t(strlen(Result))];
    }
    catch (...) {
        throw "No Memory";
    };
    int b;
    Table = "JPGVOUMFYQBENHZRDKASXLICTW";
    a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (int i = 0; i < int(strlen(Input)); i  ) {
        for (int c = 0; i < int(strlen(a)); c  ) {
            if (a[c] == Input[i]) {
                b = c;
                break;
            }
        }
        cout << "" << endl;
        ActualTable = rotate(Table, Offset);
        Result[i] = rotate(Table, Offset)[b];
        Offset = Offset   Rotation;
    }
    return Resu<
}
int main()
{
    char* A = "ZZZZ";
    cout << Crypt(A, 1, 1, 4) << endl;

    return 0;
}
 

Комментарии:

1. Не уверен, что именно может вызвать проблему, но в вашем коде много неопределенного поведения. char *Resu< try { Result=new char[size_t(strlen(Result))]; }catch(...){ throw "No Memory"; }; и подобное просто не имеет никакого смысла. Размер Result есть … длина строки Result ??

2. почему вы используете strlen здесь Table=new char[size_t(strlen(Table))]; ? Table неинициализирован, и код имеет ub

3. И какая от этого польза a = new char[size_t(strlen(a))] ? Это не имеет смысла, возвращаясь к a самому себе, заставляя вас потерять исходную строку. Вы делаете это много раз, в том числе и с Table = "JPGVOUMFYQBENHZRDKASXLICTW" помощью .

4. И помимо всего этого, вы также забываете о нулевом терминаторе строки во всех ваших распределениях. Почему вы вообще используете char* для своих строк, а std::string не ?

5. Исправьте все эти предупреждения