Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с копированием массива 
V
    Опции темы
Luyan
Дата 13.12.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 3.12.2008

Репутация: 2
Всего: 7



Есть два целых массива 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;
}

PM   Вверх
Dmi3ev
Дата 13.12.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



Цитата

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

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

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



--------------------

PM MAIL   Вверх
Luyan
Дата 13.12.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 3.12.2008

Репутация: 2
Всего: 7



Dmi3ev спасибо, с memcpy() понятно
а если по элементу копирую почему не работает?

Код

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

PM   Вверх
cutwater
Дата 13.12.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 2
Всего: 10



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

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


--------------------
user posted image
PM MAIL   Вверх
Luyan
Дата 13.12.2008, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 3.12.2008

Репутация: 2
Всего: 7



"случайно" перепутал smile 
спасибо за совет
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.