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

Указатель на строку - C++

Восстановить пароль Регистрация
 
Tropik
0 / 0 / 0
Регистрация: 05.08.2012
Сообщений: 43
22.01.2014, 23:21     Указатель на строку #1
Доброго времени суток.
У меня вопрос по поводу *char
К примеру у меня есть функция
C++
1
2
3
4
void get(char *s1)
{
s1="hello";
}
Как мне сделать что бы я передал свою строку в эту фукцию и она мне ее изменила
Например
C++
1
2
3
char *str;
get(str);
cout<<str;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
22.01.2014, 23:26     Указатель на строку #2
Цитата Сообщение от Tropik Посмотреть сообщение
s1="hello";
C++
1
strcpy(s1,"hello");
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
22.01.2014, 23:33     Указатель на строку #3
C
1
2
3
4
5
void fget(char* s)
{
    const char* h = "hello";
    while(*h) *s++ = *h++;
}
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6166 / 2895 / 282
Регистрация: 04.12.2011
Сообщений: 7,695
Записей в блоге: 3
22.01.2014, 23:37     Указатель на строку #4
Передайте адрес указателя. Иначе передаёте его копию. Только не делайте так с указателем на динамически выделенную память, существующие в единственном экземпляре.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
void foo( char ** s){
*s="Hello";
}
 
int main(){
char *a="mama";
cout<<a<<endl;
foo(&a);
cout<<a<<endl;
system("pause");
return 0;
}
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
22.01.2014, 23:57     Указатель на строку #5
Или определять размер строки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
void foo(char *s)
{
    strcpy(s,"Hello");
}
 
int main()
{
    char a[10]="Hi";
    foo(a);
    cout << a << endl;
    system("pause");
    return 0;
}
Tropik
0 / 0 / 0
Регистрация: 05.08.2012
Сообщений: 43
23.01.2014, 00:04  [ТС]     Указатель на строку #6
Спасибо.
А вот я допустим еще хочу перевести число из десятичной системы в двоичную и записать результат в эту строку.
Лучше записать результат в буфферный масссив и потом его присвоить, или каким образом это реализовать?
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
23.01.2014, 00:22     Указатель на строку #7
Цитата Сообщение от Tropik Посмотреть сообщение
А вот я допустим еще хочу перевести число из десятичной системы в двоичную и записать результат в эту строку.
Лучше записать результат в буфферный масссив и потом его присвоить, или каким образом это реализовать?
Если хотите перевести число целого типа (int, long и т.д) в строку, которая будет представлять двоичное число (что, концептуально, не совсем верно, но, в большинстве случаев, это и нужно), то алгоритм таков:
1) в цикле берете остаток от деления на 2 исходного числа. Цикл пока исходное число не равно нулю
2) помещаете этот остаток в начало буферного массива в виде ОСТАТОК - '0'
3) профит
Alex566
 Аватар для Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.01.2014, 00:27     Указатель на строку #8
Помню когда-то мне давали такое задание на собеседовании. Я его тогда решил таким образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
void NumberAsBinary(
    char *       _result,
    unsigned int _number
  )
{
    short int j = 0;
    for (unsigned int i = _number; i != 0; i /= 2, j++)
        _result[j] = ((_number^i) > _number) ? '0' : '1';
    _result[j] = 0;
}
int main() 
{
  char bin[33];
  unsigned int dec = rand()+0;
  NumberAsBinary(bin,dec);
  std::cout<<"Dec - "<<dec<<std::endl<<"Bin - "<<bin<<std::endl;
  system("pause");
  return 0; 
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 03:35     Указатель на строку
Еще ссылки по теме:

Как описать в структуре строку не через указатель C++
C++ Работа с строкой (указатель на строку)
Вернуть указатель на строку C++

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

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6166 / 2895 / 282
Регистрация: 04.12.2011
Сообщений: 7,695
Записей в блоге: 3
23.01.2014, 03:35     Указатель на строку #9
Цитата Сообщение от Tropik Посмотреть сообщение
А вот я допустим еще хочу перевести число из десятичной системы в двоичную и записать результат в эту строку.
Тогда так может:
C++
1
2
3
4
int b = 3;
char buf[10];//до 2^9 хватит 
itoa(b, buf, 2);
cout<<buf<<endl;
размер буфера выберите исходя из длины типа. Есть константы вроде INT_MAX и можно определить количество знаков. Для int 30 штук выходит. Плюс 1 для терминатора.

Добавлено через 2 часа 56 минут

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
размер буфера выберите исходя из длины типа. Есть константы вроде INT_MAX и можно определить количество знаков. Для int 30 штук выходит. Плюс 1 для терминатора.
что-то не смешно никому.
Конечно размер типа использовать нужно.

Yandex
Объявления
23.01.2014, 03:35     Указатель на строку
Ответ Создать тему
Опции темы

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