Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
#1

Как скопировать символ из символьного массива в другой массив - C++

14.11.2012, 22:47. Просмотров 2743. Ответов 26
Метки нет (Все метки)

Есть массив s[10] и r[10] в обоих по 8 символов + \0 (окончание строки).
В s[4] есть символ "т", как его скопировать, например, в r[8]?
Проблема в том, что на попытку сделать так:
C++
1
s[5] = r[8]
или
C++
1
strcpy(s[5], r[8])
компилятор меня казнит, говоря, что это невозможно, но
C++
1
strcpy(s, r)
отлично работает.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 22:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как скопировать символ из символьного массива в другой массив (C++):

Скопировать из одного символьного массива в другой, начиная с определенной позиции - C++
Добрый вечер. Столкнулся с проблемой: Имеется: char buffer = "We are the champions"; char word = " "; Мне надо скопировать в word ...

Скопировать все элементы массива в другой массив такого же размера - C++
Дан массив. Скопировать все его элементы в другой массив такого же размера: а) в том же порядке расположения элементов; б) в обратном...

Удалить символ из символьного массива - C++
Дана строка, если она является палиндромом, то вывести запись. Если не палиндром, то дополнить эту строку ее "зеркальным отражением", но...

Массив: Как скопировать двумерный массив в другой массив? - C++
Как скопировать двумерный массив в другой массив?

Почему размер символьного массива должен быть больше на 1 символ, а не на 2? - C++
Привет! Пока читал учебник Шилдта, возник вопрос: Почему Герберт Шилдт говорит, что следует задать длину на один символ больше, хотя...

Цикл: каждый символ символьного массива вывести на новой строке консоли - C++
Доброго всем здравия, споткнулся на ровном месте, цикл do while отказывается делать, то что я хочу char S = "gcfhgcf hdhgf 4754...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Костя Хута
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 22
14.11.2012, 22:49 #2
попробуй создать переменные char или string, в них записуй элементы массива,а потом в strcpy
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
14.11.2012, 22:52 #3
А зачем для этого стркопи использовать? скопируй как обычную переменную - элемент массива.
Цитата Сообщение от MrCath Посмотреть сообщение
на попытку сделать так:
s[5] = r[8]
значит или s[5] или r[8] - не есть символ.
покажи как они объявлены у тебя.
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
14.11.2012, 22:54 #4
а разве нельзя
C++ (Qt)
1
r[8] = s[5];
?
Croessmah
Модератор
Эксперт CЭксперт С++
13132 / 7395 / 828
Регистрация: 27.09.2012
Сообщений: 18,225
Записей в блоге: 3
Завершенные тесты: 1
14.11.2012, 22:55 #5
Скорее всего, они у Вас объявлены как константные строковые литералы
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
14.11.2012, 22:56  [ТС] #6
Костя Хута, вы имеете ввиду типа
C++
1
2
3
4
char s[10], r[10],s1, r1;
s[5]=s1;
r[8]=r1;
strcpy (s1,r1);
увы, не выходит, я это и сам пробовал((
Croessmah
Модератор
Эксперт CЭксперт С++
13132 / 7395 / 828
Регистрация: 27.09.2012
Сообщений: 18,225
Записей в блоге: 3
Завершенные тесты: 1
14.11.2012, 22:57 #7
Цитата Сообщение от MrCath Посмотреть сообщение
увы, не выходит, я это и сам пробовал((
Как Вы объявляете массивы со значениями?
А лучше вообще весь код выложите
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
14.11.2012, 22:57 #8
Цитата Сообщение от MrCath Посмотреть сообщение
Костя Хута, вы имеете ввиду типа
C++
1
2
3
4
char s[10], r[10],s1, r1;
s[5]=s1;
r[8]=r1;
strcpy (s1,r1);
увы, не выходит, я это и сам пробовал((
судя по этому коду, они просто не инициализированны
Костя Хута
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 22
14.11.2012, 23:01 #9
Стоп..вам нужно просто поменять местами?

char s[10], r[10],temp;
temp=s[5];
s[5]=r[8];
r[8]=temp;
Croessmah
Модератор
Эксперт CЭксперт С++
13132 / 7395 / 828
Регистрация: 27.09.2012
Сообщений: 18,225
Записей в блоге: 3
Завершенные тесты: 1
14.11.2012, 23:05 #10
Цитата Сообщение от MrCath Посмотреть сообщение
strcpy(s[5], r[8])
компилятор меня казнит, говоря, что это невозможно
Само собой, strcpy принимает указатели, а Вы ей символ скармливаете.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
14.11.2012, 23:07 #11
Цитата Сообщение от MrCath Посмотреть сообщение
увы, не выходит, я это и сам пробовал((
Почему ты не отвечаешь на мой вопрос?
Croessmah
Модератор
Эксперт CЭксперт С++
13132 / 7395 / 828
Регистрация: 27.09.2012
Сообщений: 18,225
Записей в блоге: 3
Завершенные тесты: 1
14.11.2012, 23:08 #12
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
int main(){
    char s[10]="abcdifgh";
    char r[10]="zyertgnh";
    s[5]=s[8];
    std::cout<<s;
    std::cin.get();
    return 0;
}
Всё работает как положено. Так что выкладывайте свой код... сдается мне, что что-то вы не так там делаете
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
14.11.2012, 23:15 #13
ты неправильно массив заполняешь. Тогда строки используй, вроде примерно так (если будет ошибка не ругайтесь, только учусь):
C++
1
2
3
4
5
6
char* s = new char[8];
s = 'abcdefgh'
char* r = new char[8];
r = ' zyertgnh ';
s[5] = r[8];
std::cout << r[8];
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
14.11.2012, 23:19 #14
Цитата Сообщение от MrCath Посмотреть сообщение
C++
1
2
3
4
char s[10], r[10],s1, r1;
s[5]=s1;
r[8]=r1;
strcpy (s1,r1);
ну и что ты написал???
первая строка объявление двух массивов и двух чаров все неинициализировано
вторая строка в шестой элемент массива заносишь свой чар в котором неизвестно что
тоже в третьей строке
в четвертой ты пытаешься скопировать функцией для копирования строк скопировать один чар в другой
вот правильное использование функции
C++
1
2
3
char str[] = "образец строки";
   char  buf[32];  
   strcpy(buf, str);
потому что strcpy копирует строки(в конце должен быть 0)
если тебе просто нужно скопировать один массив в другой используй memcpy
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
14.11.2012, 23:23  [ТС] #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main(){
    char s[10],p[10];
    int i,t=0;
    gets(s);
    for (i=9; i>=0; i--){
        strcpy(s[t], p[i]);}
    cout << p;
return(0);}
в цикле пытаюсь перевернуть строку...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 23:23
Привет! Вот еще темы с ответами:

Как скопировать часть массива WCHAR в массив BYTE? - C++
Пытаюсь зашифровать строку в AES. wTextIn - исходный текст wTextOut - шифрованный byte bDataBlocks = {0}; // Буффер WCHAR *...

Скопировать один динамический массив в другой - C++
Доброго времени суток. int *Array = new int; int *B_Array = new int; Первый массив я наполняю содержимым и мне нужно потом его...

Скопировать один массив char в другой - C++
у меня двухмерный символьный и одномерный массивы символов. Что в общем то мне нужно. После небольших манипуляций над одномерным массивом,...

Скопировать один символьный массив в другой - C++
Привет всем, многоуважаемые пользователи не могу сделать программу. Нам даны два массива s1 и s2 пользователь вводит фразу в массив s2 а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.11.2012, 23:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru