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

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

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

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

14.11.2012, 22:47. Просмотров 2375. Ответов 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++ Почему размер символьного массива должен быть больше на 1 символ, а не на 2?
Массив: Как скопировать двумерный массив в другой массив? C++
C++ Скопировать один элемент в другой в рамках такого массива
Скопировать из одного символьного массива в другой, начиная с определенной позиции C++
Скопировать все элементы массива в другой массив такого же размера C++
C++ Удалить символ из символьного массива
Скопировать один динамический массив в другой C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6450 / 4916 / 451
Регистрация: 14.02.2011
Сообщений: 16,308
14.11.2012, 23:41     Как скопировать символ из символьного массива в другой массив #21
Цитата Сообщение от 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];
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MastAKK
 Аватар для MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
14.11.2012, 23:42     Как скопировать символ из символьного массива в другой массив #22
Цитата Сообщение от ValeryS Посмотреть сообщение
и в стрингах и в символах их две открывающая и закрывающая
но для строки двойная
для символа одинарная
я имел ввиду одинарная
ValeryS
Модератор
6450 / 4916 / 451
Регистрация: 14.02.2011
Сообщений: 16,308
14.11.2012, 23:54     Как скопировать символ из символьного массива в другой массив #23
Цитата Сообщение от 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];
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
14.11.2012, 23:59  [ТС]     Как скопировать символ из символьного массива в другой массив #24
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 символов), он мне ничего не выдает и без ошибок завершает программу...
если ввести меньше положенного, он мне выводит какойто мусор и в конце (!) ту строку, которую я ввел (но не перевернутую)... чудеса
ValeryS
Модератор
6450 / 4916 / 451
Регистрация: 14.02.2011
Сообщений: 16,308
15.11.2012, 00:10     Как скопировать символ из символьного массива в другой массив #25
Цитата Сообщение от 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);}
MrCath
7 / 7 / 1
Регистрация: 08.11.2012
Сообщений: 68
15.11.2012, 00:38  [ТС]     Как скопировать символ из символьного массива в другой массив #26
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 будет заносить символы в массив пока не появится пробел, а мне пробелы тоже нужны)))
Всем спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.11.2012, 07:33     Как скопировать символ из символьного массива в другой массив
Еще ссылки по теме:

Скопировать один массив char в другой C++
C++ Как скопировать часть массива WCHAR в массив BYTE?
C++ Цикл: каждый символ символьного массива вывести на новой строке консоли
Скопировать один символьный массив в другой C++
Скопировать один массив в другой, используя указатели C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6450 / 4916 / 451
Регистрация: 14.02.2011
Сообщений: 16,308
15.11.2012, 07:33     Как скопировать символ из символьного массива в другой массив #27
Цитата Сообщение от MrCath Посмотреть сообщение
твоя программа заработала и я понял как она работает.
"Уря! Заработало"(с)

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

Добавлено через 6 часов 40 минут
Цитата Сообщение от MrCath Посмотреть сообщение
просто cin будет заносить символы в массив пока не появится пробел, а мне пробелы тоже нужны)))
посмотри вот эту тему
Как на C++ ввести с консоли строку с пробелами в тип string?
Yandex
Объявления
15.11.2012, 07:33     Как скопировать символ из символьного массива в другой массив
Ответ Создать тему
Опции темы

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