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

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

Войти
Регистрация
Восстановить пароль
 
tf2funny
Сообщений: n/a
#1

Возврат массива - C++

01.03.2013, 05:21. Просмотров 312. Ответов 4
Метки нет (Все метки)

Не спрашивайте зачем я это делаю, если можно просто использовать strcpy.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
char tostrcpy(char *to, char *from);
 
int main(int i)
{
    setlocale(LC_ALL, "Russian");
    char str01[40], str02[40];
    int choise(0);
 
    cout << "Введите строку 01: ";
    gets(str01);
    cout << "Введите строку 02: ";
    gets(str02);
    cout << "Какую строку нужно скопировать?" << endl;
    cout << "  01 или 02  ";
    cout << "Выбор: ";
    cin >> choise;
        switch(choise)
        {
        case 01:
            cout << "Строка 02: " << tostrcpy(str02, str01);
            break;
        case 02:
            cout << "Строка 01:" << tostrcpy(str01, str02);
            break;
        }
 
    cout << "\n\n";
    system("PAUSE");
    return 0;
}
 
char tostrcpy(char *to, char *from)
{
        for(int i = 0; from[i]; i++)
        {
            to[i] = from[i];
        }
        return *to;
}
Функция tostrcpy возвращает только начало массива т.к. там стоит указатель(*), а без указателя пишет ошибку и не хочет компилировать.
C++
1
return to; // ошибка
Уже много чего перепробовал, что в голову приходило, но всё безуспешно.
Вопрос: Как из функции tostrcpy возвратить весь массив to, а не только первое значение?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2013, 05:21     Возврат массива
Посмотрите здесь:

Возврат массива из функции C++
C++ Возврат значения массива в void
C++ Возврат массива из класса
C++ Возврат массива из функции
Возврат созданного в функции массива C++
C++ Возврат массива из функции
C++ Не могу организовать возврат массива из функции
Возврат функцией массива структур C++
C++ Возврат массива из функции
C++ Возврат массива из функции
Возврат индексов двумерного массива C++
Возврат адресов элементов массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
01.03.2013, 06:35     Возврат массива #2
В заголовке и определении функции добавить звездочку после типа, т.е.
C++
1
char * tostrcpy(char *to, char *from)
И возвращать через return to;
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.03.2013, 06:57     Возврат массива #3
Цитата Сообщение от tf2funny Посмотреть сообщение
Как из функции tostrcpy возвратить весь массив to, а не только первое значение?
Массивы в функции не передаются по значнию. Передаётся указатель на начало массива, а сам массив остаётся на месте. Поэтому можно вообще ничего не возвращать.
tf2funny
Сообщений: n/a
01.03.2013, 07:13     Возврат массива #4
Спасибо, оба способа подошли.
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.03.2013, 07:15     Возврат массива #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
using namespace std;
 
void tostrcpy(char *to, char *from);
 
int main(int i)
{
    setlocale(LC_ALL, "Russian");
    
    char str01[40], str02[40];
    
    int choise(0);
 
    cout << "Введите строку 01: ";
    gets(str01);
    cout << "Введите строку 02: ";
    gets(str02);
    cout << "Какую строку нужно скопировать?" << endl;
    cout << "  01 или 02  ";
    cout << "Выбор: ";
    cin >> choise;
        switch(choise)
        {
        case 1:
            tostrcpy(str02, str01);
            cout << "Строка 02: " << str02;
            break;
        case 2:
            tostrcpy(str01, str02);
            cout << "Строка 01:" << str01;
            break;
        }
 
    cout << "\n\n";
    system("PAUSE");
    return 0;
}
 
void tostrcpy(char *to, char *from)
{
        for(int i = 0; ; i++)
        {
            to[i] = from[i];
            if (!to[i]) break;
        }
}
Yandex
Объявления
01.03.2013, 07:15     Возврат массива
Ответ Создать тему
Опции темы

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