Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Проблема с копированием массива


Автор: Luyan 13.12.2008, 17:44
Есть два целых массива a и b. Массив а вводим вручную
Нужно скопировать элементы a в b. Использую функцию memcpy(). В итоге копируется только первый элемент. Пробывал цикл, для копирования каждого элемента - ничего не вышло. Помогите, не вижу ошибки! 

Код

#include <iostream>
#include <string>
using namespace std;
int main()
{
    int const y=5;
    int a[y];
    int b[y];
    int i;
    for(i=0;i<y;i++)
        {
        cout << "a" << "[" << i << "]=";
        cin >> a[i];
        }
    cout << "a:\n"; 
    for (i=0;i<y;i++)
        {
        cout.width(5);
        cout << a[i];
        }
    memcpy(b,a,sizeof(y));
    cout << "\nb:\n";
    for (i=0;i<y;i++)
    {
    cout.width(5);
    cout << b[i];
    }
    return 0;
}

Автор: Dmi3ev 13.12.2008, 17:56
Цитата

memcpy(b,a,sizeof(y));

это значит, что ты копируешь из а в b sizeof(y) байтов,  а тебе надо в пять раз больше, тебе надо записать:
Код

memcpy(b,a,(sizeof(int)*y));

Автор: Luyan 13.12.2008, 18:54
Dmi3ev спасибо, с memcpy() понятно
а если по элементу копирую почему не работает?

Код

for(i=0;i<y;i++)
{
      a[i]=b[i];
}

Автор: cutwater 13.12.2008, 19:25
А вы местами a и b массивы не перепутали случайно?
Вы же копируете из а в b а не наоборот

Добавлено через 56 секунд
И еще совет. Научитесь пользоваться документацией и отладчиком. Это полезно бывает

Автор: Luyan 13.12.2008, 19:37
"случайно" перепутал smile 
спасибо за совет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)