В чем дело? strcpy?

Рейтинг: 0Ответов: 1Опубликовано: 06.04.2015

Не понимаю в чем проблема:

#pragma argsused
#include <iostream>
#include <cstring>
#define SIZE 250
#define SIZE_2 5
using namespace std;
//Прототипы функций
char *keyWord();
//Глобальные переменные
    char G_processedText[] = "";
    char G_alphabet[25] = {'a','b','c','d','e','f','g','h','i','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

    int main(int argc, char* argv[])
    {
        keyWord();
        system("pause");
        return 0;
    }
    //---------------------------------------------------------------------------
    char *keyWord()
    {
        char writedText[SIZE], processedText[SIZE];
        char i, j, k;
        cin.getline(writedText, SIZE);
        system("cls");
        for(i = 0; i < strlen(writedText); i++)
        {
            j = writedText[i];
            if(!strchr(processedText, j) && j != ' ')
            {
                processedText[k] = j;
                k += 1;
            }
        }
        // Если написана эта строчка и после нее вывести на экран массив char получится ахинея, если удалить strcpy на экран все выводится корректно(вывожу массив alphabet)
        strcpy(G_processedText, processedText);
        cout << "Your Key: " << processedText << endl;
        return 0;
    }

Кто знает подскажите в чем дело, что не так я делаю?

Ответы

▲ 2Принят

Длина массива G_processedText у вас 1. А вы копируете в него строку. В результате выходите за пределы массива и перезаписываете чужую память