Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
1

Вывод char из функции

24.01.2014, 19:36. Показов 3151. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
выводит первую букву слово, подскажите ошибку ...

исполняемый файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "stdafx.h"
#include "Header.h"
#include <iostream>
using namespace std;
 
char words::GetCount() const
{
    return *count;
}
 
void words::SetCount()
{
    cin.getline(count, 256);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2014, 19:36
Ответы с готовыми решениями:

Различное поведение функции которая копирует строки с char* t и char t[]
столкнулся с ситуацией которую не могу объяснить пишем функцию которая копирует одну строку в...

Реализация функции char *padl(const char *string, int len, int c=' ')
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо...

Вывод в с++/CLI char как char
#include &quot;stdafx.h&quot; #include &lt;Windows.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; #include...

Проблема с char**. Все элементы char** после выполнения функции приобретают одно и то же значение
Суть такая: сначала найти в введенной строке подстроку &quot;\ &quot; (например, &quot;mkdir my\ dir&quot;), и зменить...

25
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
24.01.2014, 19:44 2
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
C++
1
2
3
4
char words::GetCount() const
{
return *count;
}
C++
1
2
3
4
char words::GetCount() const
{
     return count;
}
если мои телепатические способности не подвели
0
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.01.2014, 19:46  [ТС] 3
также работать не будет
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
24.01.2014, 19:49 4
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
C++
1
2
3
4
char words::GetCount() const
{
    return *count;
}
функция может вернуть число(символ) char
если count это строка
то нужно вернуть указатель на неё
C++
1
2
3
4
char * words::GetCount() const
{
   return count;
}
0
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
24.01.2014, 19:50 5
Цитата Сообщение от ValeryS Посмотреть сообщение
если count это строка
то нужно вернуть указатель на неё
а я и не заметил)
0
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.01.2014, 19:51  [ТС] 6
Цитата Сообщение от ValeryS Посмотреть сообщение
функция может вернуть число(символ) char
если count это строка
то нужно вернуть указатель на неё
C++
1
2
3
4
char * words::GetCount() const
{
   return count;
}
ругается компилятор
Error 1 error C2440: 'return' : cannot convert from 'const char [256]' to 'char *'
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
24.01.2014, 19:56 7
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
ругается компилятор
для начала убрать const из функции
C++
1
2
3
4
char * words::GetCount()
{
   return count;
}
во вторых покажи наконец что такое count?
и как вообще реализован класс words?
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.01.2014, 20:25  [ТС] 8
действительно без const заработало, плюсик

Добавлено через 27 минут
может еще подскажите почему не работает ?
C++
1
2
3
4
5
6
7
8
9
void words::list_words()
{
    char* buf = strtok(count, " ");
    while (buf)
    {
        cout << "buf" << endl;
        strtok(NULL , " ");
    }
}
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.01.2014, 20:47 9
Я попал на битву экстрасенсов!
Где весь код?

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
для начала убрать const из функции
предложу наоборот, добавить const!
C++
1
const char* getStr() const
что концептуально правильнее для get-метода
0
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.01.2014, 20:57  [ТС] 10
main
C++
1
2
3
4
5
6
7
8
int _tmain(int argc, _TCHAR* argv[])
{
    words Object;
    Object.SetCount();
    cout << Object.GetCount() << endl;
    Object.list_words();
    return 0;
}
заголовок
C++
1
2
3
4
5
6
7
8
9
10
11
class words
{
public:
    words();
    ~words();
    char* GetCount();
    void SetCount();
    void list_words();
private:
    char count[256];
};
исполняемый
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char* words::GetCount()
{
    return count;
}
 
void words::SetCount()
{
    cin.getline(count, 256);
}
 
void words::list_words()
{
    char* buf = strtok(count, " ");
    while (buf)
    {
        cout << "buf" << endl;
        strtok(NULL , " ");
    }
}
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.01.2014, 21:00 11
C++
1
buf = strtok(NULL , " ");
нет реализации конструктора и деструктора
0
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.01.2014, 21:02  [ТС] 12
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
buf = strtok(NULL , " ");
нет реализации конструктора и деструктора
C++
1
2
3
4
5
6
7
8
9
10
11
12
words::words()
{
    cout << "program successfully launched" << endl
         << "-----------------------------" << endl;
}
 
words::~words()
{
    cout << "-----------------------------" << endl
         << "program has been successfully completed" << endl;
    system("pause");
}
или какие-то другие конструкторы и деструкторы реализовать нада ?
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.01.2014, 21:13 13
Fene4ka_, если придет сантехник починить раковину, вы открутите кран, дадите ему и упорно будете скрывать весь остальной механизм?
Почему из вас все надо вытягивать? Как можно помочь в том, чего не видишь? Да хотя вы и проблему толком не озвучили. Мб у вас "Почему не работает" == "компилируется, но работает не так как хочу", а мы понимаем под этим совершенно другое. Да и в вашем случае тогда встает резонный вопрос. Как вы хотите? Только не говорите "чтобы заработало".

Тут все за вас приходится дописывать, угадывать, додумывать. А ведь при правильно составленном вопросе ответ получили бы сразу и не устраивали бы тут шоу (как то, что на ТНТ идет).

Добавлено через 22 секунды
Цитата Сообщение от Fene4ka_ Посмотреть сообщение
или какие-то другие конструкторы и деструкторы реализовать нада ?
какие-то другие не надо, достаточно было показать эти.
0
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.01.2014, 21:16  [ТС] 14
сейчас не компилируется
Error 1 error C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

перестало работать после добавления
C++
1
2
3
4
5
6
7
8
9
void words::list_words()
{
    char* buf = strtok(count, " ");
    while (buf)
    {
        cout << "buf" << endl;
        strtok(NULL , " ");
    }
}
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.01.2014, 21:21 15
C++
1
#define _CRT_SECURE_NO_WARNINGS
А вообще, это проблемы несовместимости последней VS со стандартом.
Раньше был warning, а теперь даже не дает скомпилировать корректный с точки зрения стандарта код, предлагая заменить нормальную функцию на проприетарную.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 21:25 16
Цитата Сообщение от MrGluck Посмотреть сообщение
А вообще, это проблемы несовместимости последней VS со стандартом.
Раньше был warning, а теперь даже не дает скомпилировать корректный с точки зрения стандарта код, предлагая заменить нормальную функцию на проприетарную.
Здесь описано, как можно отключить: https://www.cyberforum.ru/post5488517.html
1
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.01.2014, 21:25  [ТС] 17
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
#define _CRT_SECURE_NO_WARNINGS
А вообще, это проблемы несовместимости последней VS со стандартом.
Раньше был warning, а теперь даже не дает скомпилировать корректный с точки зрения стандарта код, предлагая заменить нормальную функцию на проприетарную.
и как это сделать ? максимально подробно плз
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.01.2014, 21:30 18
Fene4ka_, либо так, как по ссылке выше в посте #16, либо прописав в начале код из поста #15, который вы сцитировали, либо заменив strtok и т.д. на "безопасные" strtok_s и т.д...
0
102 / 102 / 40
Регистрация: 24.01.2014
Сообщений: 1,242
24.01.2014, 21:44  [ТС] 19
сделал как в посте #16, но теперь проблема в том, что постоянно выводится первое слово, без остановки
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
24.01.2014, 22:03 20
Fene4ka_,
Цитата Сообщение от MrGluck Посмотреть сообщение
C++
1
buf = strtok(NULL , " ");
1
24.01.2014, 22:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2014, 22:03
Помогаю со студенческими работами здесь

Получить массив char и его размер из функции - Указатель не меняется вне функции
Помогите пожалуйста разобраться в чём проблема. Добавлено через 34 минуты Помогите пожалуйста...

Объявить массив из N указателей на функции, возвращающих указатели на функции, возвращающие указатель на char
Задание: Объявить массив из N указателей на функции, возвращающих указатели на функции,...

Char вывод
Как вывести символы из массива символов char числа?

Некорректный вывод char
Подскажите пожалуйста, почему при выводе char у меня всегда выводит &quot;и&quot; не смотря на то, что я...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru