Запись значения в строку стиля c в структуре

На всю жизнь я не могу понять, почему я не могу написать строку в стиле c внутри структуры.

Студент колледжа - не может использовать класс строк, не изучил указатели.

Помощь? 2 часа пытаюсь разобраться.

#include <iostream>

using namespace std;

void strCopy(char from[], char to[])
{     
    for (int i = 0; i < 255; i++)
    {
        to[i] = from[i];
    }
}

struct card
{
    char suit[20];
    char rank[20];
    int cvalue;
    char location[20];
};

void printCard(card card)
{
    cout << card.rank << " of " << card.suit << endl;
}

int main() 
{
    // I don't think strCopy()'s the problem, I've used it with my last project.
    cout << "Test strCopy()" << endl;

    char str1[14] = "abcdefghijklm";
    char str2[14];

    strCopy(str1, str2);

    cout << "    " << str2 << endl << endl;

    // Now the negative.
    card one;
    one.cvalue = 2;
    strCopy("Somewhere", one.location);
    strCopy("Two", one.rank);
    strCopy("Hearts", one.suit);

    printCard(one); 
}

person Cesar Vega    schedule 12.09.2014    source источник
comment
Ваша функция strCpy() всегда записывает 255 символов, но ваши массивы char содержат только 20 символов. Поэтому каждый раз, когда вы вызываете strCpy(), вы списываете конец массива и черт знает что еще...   -  person Jeremy Friesner    schedule 12.09.2014
comment
for (int i = 0; i < 255; i++) что. Ваши строки имеют длину 14/20 chars, вы положительно уничтожаете свой стек.   -  person user657267    schedule 12.09.2014


Ответы (1)


// Я не думаю, что проблема в strCopy(), я использовал ее в своем последнем проекте.

Неправильно

for (int i = 0; i < 255; i++)
{
        to[i] = from[i]; 
}

копирует 255 символов, однако это не то, что вы имели в виду.

Если здесь:

strCopy(str1, str2);
cout << "    " << str2 << endl << endl;

Вы получаете «правильный» вывод, значит, вам просто не повезло, поскольку это вызывает неопределенное поведение, и вы списываете конец массива.

person P0W    schedule 12.09.2014
comment
Видимо, тогда мне нужна помощь с strCopy(). -___-. Спасибо! - person Cesar Vega; 12.09.2014