Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/60: Рейтинг темы: голосов - 60, средняя оценка - 4.68
1 / 1 / 0
Регистрация: 28.03.2012
Сообщений: 9
1

Функция возвращает строку (или указатель на начало строки)

01.07.2012, 12:47. Показов 11420. Ответов 3
Метки нет (Все метки)

Подскажите пожалуйста. Застрял на тривиальной задачке. Никак не могу добится чтобы функция возвращала корректно строку.(правильнее наверное будет сказать указатель на начало строки). Вот код примера на котором пробую:
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
#include<string.h>
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
 
char str_rev(char *s1)
{
    char s[100]="Hello";
    *s1=s[0];
    return *s1;
}
 
main()
{
 char s[100],r[100];
 int i=0,j=0;
 *r=str_rev(s);
 for(i=0;i<strlen(r);i++)
    cout<<r[i];
 cout<<endl;
 puts(r);
 getch();
 return 0;
}
Пробовал уже по разному - ничего не выходит, на выходе - краказябры.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2012, 12:47
Ответы с готовыми решениями:

Функция alltrim удаляет из строки начальные и конечные пробелы и возвращает указатель на преобразованную строку
Дали задание в ВУЗе. Назначение программы: Функция alltrim удаляет из строки начальные и конечные...

Функция, получающая подстроку, возвращает испорченный указатель на строку
Пытаюсь выделить подстроку в Microsoft Visual C++ 2013, чтобы убрать путь к файлу и оставить только...

Функция с указателем и индексом(Удаляет в строке лидирующие пробелы. Возвращает указатель на преобразованную строку.)
Ребята помогите зачет получить, на парах не был..( Написать следующие функции в двух вариантах:...

Функция принимает указатель на void и возвращает указатель на int
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.

3
126 / 124 / 16
Регистрация: 03.07.2011
Сообщений: 354
01.07.2012, 13:33 2
чтобы возвращать указатель, нужно соответственно объявить функцию
C++
1
char* str_rev(char *s1)
т.е указать, что она возвращает указатель на char.
переменные в main тоже нужно объявить как указатели.
еще вы в аргументе передаете указатель, поэтому его можно и не возвращать.

только вроде нельзя возвращать указатель на память, выделенную в этой функции, т.к память освободится и данные будут утеряны.
1
2226 / 1729 / 865
Регистрация: 21.12.2010
Сообщений: 3,073
Записей в блоге: 11
01.07.2012, 14:01 3
как вариант - std::unique_ptr
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <memory>
#include <cstring>
 
std::unique_ptr<char[]> F()
{
    const char* p = "Hello, world!";
    std::unique_ptr<char[]> up(new char[std::strlen(p) + 1]);
    std::strcpy(up.get(), p);
    return up;
}
 
int main()
{
    std::cout << F().get() << std::endl;
    return 0;
}
0
-2 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 14
18.12.2014, 00:32 4
Можно просто в 8ой строке char s[100]="Hello"; написать static char s[100]="Hello";
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2014, 00:32

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Разработать и испытать функцию, которая переворачивает строку и возвращает указатель на перевёрнутую строку
Разработать и испытать функцию, которая переворачивает строку и возвращает указатель на...

Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую объединенный текст из входных строк
Функция получает массив указателей на строки и возвращает строку в динамической памяти, содержащую...

Функция min_element() возвращает указатель на ноль
Необходимо найти максимальный элемент среди минимальных в двумерном массиве. Сначала ищу...

Функция формирует массив и возвращает указатель на него
Задание: написать функцию с аргументами: вещественное х, целое n. Функция формирует массив у:...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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