strcat пропускает символы?

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

План действий такой записано где-то в глобальную переменную G_processedText текстовое сообщение, в этой функции я присоединяю к этой переменной переменную alphabet(пока все без нареканий), потом через цикл делаю отсечку повторяющихся символов(с помощью функции strcat) в переменную saveSymbols и вот здесь происходят странные вещи: сначала строки соединятся, но потом от G_processedText в результате цикла может отъесть одну букву

#pragma argsused
#include <iostream>
#include <cstring>
#define SIZE 250
#define SIZE_2 5
using namespace std;
//Прототипы функций
void keyWord();
void initializeMatrix();
//Глобальные переменные
char G_processedText[SIZE];

int main(int argc, char* argv[])
{
    initializeMatrix();
    system("pause");
    return 0;
} 
    void initializeMatrix()
    {
        ///cout << "Matrix: " << G_processedText << endl;
        char matrix[SIZE_2][SIZE_2];
        char saveSymbols[SIZE_2];
        char alphabet[] = "abcdefghiklmnopqrstuvwxyz";
        char j, p;
        int i, k;
        k = 0;
        ///Объединение ключа и алфавита
        strcat(G_processedText, alphabet);
        cout << "\nMatrix: " << endl;
        for (i = 0; i <= strlen(G_processedText); i++)
        {
            p = G_processedText[i];
            if(!strchr(saveSymbols, p))
            {
                saveSymbols[k] = p;
                k += 1;
            }
        }
        cout << saveSymbols;

Итогом всех действий должна быть строка без повторяющихся символов

Ответы

▲ 1

Написал так:

char saveSymbols[SIZE] = "";

И мусор исчез, попутный вопрос, а какие еще способы очистки есть? Такой вариант компилятор отказался обрабатывать

char saveSymbols[SIZE] = {};