Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/65: Рейтинг темы: голосов - 65, средняя оценка - 4.65
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68

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

14.11.2012, 22:47. Показов 13466. Ответов 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)
отлично работает.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2012, 22:47
Ответы с готовыми решениями:

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

Как скопировать без цикла, первые 3 элемента массива в другой массив?
Как скопировать без цикла (for,foreach) первые 3 элемента массива в другой массив?

Как скопировать несколько элементов массива в другой массив, если они непоследовательны?
Как скопировать несколько элементов массива в другой массив, если они непоследовательны? Ну, или другая формулировка: удалить несколько...

26
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
14.11.2012, 23:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от MrCath Посмотреть сообщение
в цикле пытаюсь перевернуть строку...
ну а зачем тогда
Цитата Сообщение от MrCath Посмотреть сообщение
strcpy(s[t], p[i]);
?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main(){
    char s[10],p[10];
    int i,t=0;
    gets(s);// писать лучше однообразно  если используешь cout << p; используй cin>>s
    t=strlen(s); // определяем размер строки 
   
   for (i=0; i<=t; i--) // копируем данные
           p[i]=s[t-i];  // с переворотом
    p[i]=0; // чтобы в массиве была строка добавим завершающий 0
  cout << p;
return(0);}
Добавлено через 2 минуты
Цитата Сообщение от MastAKK Посмотреть сообщение
по-поводу кавычек... в стрингах она вроде одна
и в стрингах и в символах их две открывающая и закрывающая
но для строки двойная
для символа одинарная

Добавлено через 4 минуты
Цитата Сообщение от MrCath Посмотреть сообщение
В s[4] есть символ "т", как его скопировать, например, в r[8]?
Цитата Сообщение от MrCath Посмотреть сообщение
s[5] = r[8]
копируешь наоборот да и индексы не совпадают с описанием
C++
1
r[8] = s[4];
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
14.11.2012, 23:42
Цитата Сообщение от ValeryS Посмотреть сообщение
и в стрингах и в символах их две открывающая и закрывающая
но для строки двойная
для символа одинарная
я имел ввиду одинарная
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
14.11.2012, 23:54
Цитата Сообщение от ValeryS Посмотреть сообщение
for (i=0; i<=t; i--) // копируем данные
p[i]=s[t-i]; // с переворотом
пардон, перемудрил
вот так надо
C++
1
2
for (i=0; i<t; i++) // копируем данные
     p[i]=s[t-i-1];
0
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
14.11.2012, 23:59  [ТС]
ValeryS, программа закрывается ошибкой при вводе символа(
что интересно
если в s[5] буква "t", то написав
C++
1
2
r[8]=s[5]
cout<<r[8]
программа выводит на экран букву "t", но крутой загиб типа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main(){
    char s[10],p[10];
    int i,t=0;
    gets(s);
    
        p[9]=s[0];
        p[8]=s[1];
        p[7]=s[2];
        p[6]=s[3];
        p[5]=s[4];
        p[4]=s[5];
        p[3]=s[6];
        p[2]=s[7];
        p[1]=s[8];
        p[0]=s[9];
    
    cout << p;
return(0);}
он не принимает, я ввожу символы,(9 символов), он мне ничего не выдает и без ошибок завершает программу...
если ввести меньше положенного, он мне выводит какойто мусор и в конце (!) ту строку, которую я ввел (но не перевернутую)... чудеса
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
15.11.2012, 00:10
Цитата Сообщение от MrCath Посмотреть сообщение
не выдает и без ошибок завершает программу...
программа отработала и закрывается, ты не успеваешь прочитать
вопрос неоднократно обсуждался
поставь перед return
C++
1
system("pause")
есть и другие пути

Добавлено через 3 минуты
другой аспект
Цитата Сообщение от MrCath Посмотреть сообщение
я ввожу символы,(9 символов)
т.е в s[9] у тебя завершающий 0
а ты его копируешь в начало
Цитата Сообщение от MrCath Посмотреть сообщение
p[0]=s[9];
и
Цитата Сообщение от MrCath Посмотреть сообщение
cout << p;
думает что у тебя пустая строка (в начале же 0) и ничего не выводит

Добавлено через 2 минуты
Цитата Сообщение от MrCath Посмотреть сообщение
ValeryS, программа закрывается ошибкой при вводе символа(
в смысле ?? при вводе с клавиатуры???
я там с циклом напортачил потом переписал
Цитата Сообщение от ValeryS Посмотреть сообщение
пардон, перемудрил
вот так надо
C++
1
2
for (i=0; i<t; i++) // копируем данные
   p[i]=s[t-i-1];
вот исправленная прога
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main(){
    char s[10],p[10];
    int i,t=0;
    gets(s);// писать лучше однообразно  если используешь cout << p; используй cin>>s
    t=strlen(s); // определяем размер строки 
   
   for (i=0; i<t; i++) // копируем данные
     p[i]=s[t-i-1];  // с переворотом
    p[i]=0; // чтобы в массиве была строка добавим завершающий 0
  cout << p;
return(0);}
1
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
15.11.2012, 00:38  [ТС]
ValeryS, твоя программа заработала и я понял как она работает.
А что касается моей ошибки, так я не расчитал правильно положение конца строки ( цифры 0 ),
такой вариант начал работать (при вводе 9 разных символов)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int main(){
    char s[10],p[11];
    int i,t=0;
    gets(s);
    
        p[9]=0;
        p[8]=s[0];
        p[7]=s[1];
        p[6]=s[2];
        p[5]=s[3];
        p[4]=s[4];
        p[3]=s[5];
        p[2]=s[6];
        p[1]=s[7];
        p[0]=s[8];
    cout <<p;
 
return(0);}
истина в p[9]=0, из за того, что не было конца строки, она выдавала мусор.
писать лучше однообразно если используешь cout << p; используй cin>>s
просто cin будет заносить символы в массив пока не появится пробел, а мне пробелы тоже нужны)))
Всем спасибо.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
15.11.2012, 07:33
Цитата Сообщение от MrCath Посмотреть сообщение
твоя программа заработала и я понял как она работает.
"Уря! Заработало"(с)

Цитата Сообщение от MrCath Посмотреть сообщение
такой вариант начал работать (при вводе 9 разных символов)
такой вариант тоже имеет место быть, он даже быстрее чем мой(развертывание цикла)
но строго для девяти символов

Добавлено через 6 часов 40 минут
Цитата Сообщение от MrCath Посмотреть сообщение
просто cin будет заносить символы в массив пока не появится пробел, а мне пробелы тоже нужны)))
посмотри вот эту тему
Как на C++ ввести с консоли строку с пробелами в тип string?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.11.2012, 07:33

Скопировать содержимое одного символьного потока в другой
Скопируйте содержимое одного символьного потока в другой, попутно делая замену символов, для замены используются две строки одинаковой...

Скопировать определенные строки массива в другой массив
Добрый вечер. Подскажите пожалуйста. Имею двумерный массив то есть по сути таблица строки и столбцы. Хочу нужные мне строки засунуть в...

Из массива символов скопировать цифры в другой массив
Подскажите. Допустим дан массив символов, например &quot;sd2f5g23g&quot;, нужно скопировать все цифры в другой массив, то есть другой массиве...

Из одного массива скопировать переменную в другой массив
Суть задачи, есть класс B, в котором две переменные a и b, вот так это выглядит, class B { int a; float b; } В мэйне надо...

Скопировать числа из столбцов одного массива в другой массив
Дан массив чисел A (из n строк и m столбцов) со значением элементов от 0 до 255 (заполнить случайными числами). Из массива выбираются два...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru