Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Tropik
0 / 0 / 1
Регистрация: 05.08.2012
Сообщений: 43
1

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

22.01.2014, 23:21. Просмотров 537. Ответов 8
Метки нет (Все метки)

Доброго времени суток.
У меня вопрос по поводу *char
К примеру у меня есть функция
C++
1
2
3
4
void get(char *s1)
{
s1="hello";
}
Как мне сделать что бы я передал свою строку в эту фукцию и она мне ее изменила
Например
C++
1
2
3
char *str;
get(str);
cout<<str;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2014, 23:21
Ответы с готовыми решениями:

Чем отличаются указатель на строку и константный указатель на строку?
Просто обьясните, как такое возможно? char *a=&quot;fff&quot;; В чем отличие от этого? : const char...

Указатель на строку: как выводить не всю строку целиком, а конкретную букву
Есть программка: #include&lt;iostream&gt; using namespace std; void fn_str1(int i,string str1,char *p)...

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

Элемент двусвязного списка содержит указатель на строку. Вставить строку в конец списка
Элемент двусвязного списка содержит указатель на строку. Вставить строку в конец списка. В список...

Указатель на строку
Скажите пожалуйста если есть string str=&quot;Big!&quot;; string *pt=&amp;str;, как можно обратиться к...

8
Alex566
242 / 154 / 47
Регистрация: 03.04.2013
Сообщений: 317
22.01.2014, 23:26 2
Цитата Сообщение от Tropik Посмотреть сообщение
s1="hello";
C++
1
strcpy(s1,"hello");
0
gromo
377 / 276 / 30
Регистрация: 04.09.2009
Сообщений: 1,224
22.01.2014, 23:33 3
C
1
2
3
4
5
void fget(char* s)
{
    const char* h = "hello";
    while(*h) *s++ = *h++;
}
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7299 / 3555 / 486
Регистрация: 04.12.2011
Сообщений: 10,038
Записей в блоге: 5
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;
}
0
22.01.2014, 23:37
Alex566
242 / 154 / 47
Регистрация: 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;
}
0
Tropik
0 / 0 / 1
Регистрация: 05.08.2012
Сообщений: 43
23.01.2014, 00:04  [ТС] 6
Спасибо.
А вот я допустим еще хочу перевести число из десятичной системы в двоичную и записать результат в эту строку.
Лучше записать результат в буфферный масссив и потом его присвоить, или каким образом это реализовать?
0
gromo
377 / 276 / 30
Регистрация: 04.09.2009
Сообщений: 1,224
23.01.2014, 00:22 7
Цитата Сообщение от Tropik Посмотреть сообщение
А вот я допустим еще хочу перевести число из десятичной системы в двоичную и записать результат в эту строку.
Лучше записать результат в буфферный масссив и потом его присвоить, или каким образом это реализовать?
Если хотите перевести число целого типа (int, long и т.д) в строку, которая будет представлять двоичное число (что, концептуально, не совсем верно, но, в большинстве случаев, это и нужно), то алгоритм таков:
1) в цикле берете остаток от деления на 2 исходного числа. Цикл пока исходное число не равно нулю
2) помещаете этот остаток в начало буферного массива в виде ОСТАТОК - '0'
3) профит
0
Alex566
242 / 154 / 47
Регистрация: 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; 
}
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7299 / 3555 / 486
Регистрация: 04.12.2011
Сообщений: 10,038
Записей в блоге: 5
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 для терминатора.
что-то не смешно никому. :D
Конечно размер типа использовать нужно. :)

0
23.01.2014, 03:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.01.2014, 03:35

Указатель на строку
Доброго вам времени суток, у меня пояилась проблема с применением функций строки к указателю на...

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

Как получить ссылку на указатель или указатель на указатель в массиве?
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения...


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

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

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