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

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

Войти
Регистрация
Восстановить пароль
 
Unreal_Reality
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 8
#1

Строки в классе. Объясните, пожалуйста - C++

11.11.2013, 16:33. Просмотров 303. Ответов 9
Метки нет (Все метки)

Строка задается в классе, используется одной функцией, а инициализируется другой.
При компиляции программа ошибок не пишет, но не рабjтает. Объясните, в чем дело, пожалуйста.

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
class Zodiak
{
    int day, month, year;
    
public:
    char *name;
...
void openfiles();
void znak();
....}
void openfiles()
{
ifstream inf;
inf.open(name);
}
void znak()
{
 
    if ( (month == 3 && day >= 21) || (month == 4 && day <= 20) )
    {cout<<"pyfr\n";    
    char* oven = "D:\file.txt";
    strcpy(name,oven);}
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2013, 16:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строки в классе. Объясните, пожалуйста (C++):

Объясните пожалуйста. Поле а классе объявлено, однако пишет обратное - C++
Собственно всё во вложении. Объясните пожалуйста, а то часто такого наворочу.

Объясните пожалуйста что делают выделенные строки - C++
#include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; typedef struct node { int number; node *next; ...

Объясните пожалуйста что означают некоторые строки - C++
1) while ((((*(string1 + i)!=0)) || ((*(string2 + i) != 0))) &amp;&amp; (i&lt;n)) что означает string1 + i? 2) if (*(array + i*n + i) &gt; mx) и...

Товарисчи объясните пожалуйста как сделать данную задачу! (Найти наибольший элемент каждой строки А(4,6) и записать их в массив Y) - C++
Найти наибольший элемент каждой строки А(4,6) и записать их в массив Y. С программированием не разу не сталкивался объясните...

объясните пожалуйста - C++
для чего нужны библиотеки stdafx.h и iomanip.h?

Объясните, пожалуйста - C++
Всё читал, читал и никак не нашел внятного ответа на два вопроса: для чего нужна перегрузка операторов и для чего нужны виртуальные...

9
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 1
11.11.2013, 16:40 #2
Цитата Сообщение от Unreal_Reality Посмотреть сообщение
При компиляции программа
А покажите пожалуйста код программы, а не просто описание класса.
(и вон там многоточия в седьмой и десятой строке я полагаю вы убираете при компиляции?)
0
Unreal_Reality
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 8
11.11.2013, 17:44  [ТС] #3
Многоточия - это другие функции, они к данному вопросу отношения не имеют.
А вызываю функцию более чем стандартно:
Class a;
a.input();
a.znak();

Добавлено через 31 минуту
Просто скажите мне, как открыть файл через функцию openfile(), если имя файла определяется в другой функции znak()&
0
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
11.11.2013, 18:26 #4
а если
C++
1
const char* oven = "D:\\file.txt";
Добавлено через 45 секунд
и чем не угодила std::string?
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 1
11.11.2013, 18:29 #5
Двадцать первая строка:
Цитата Сообщение от Unreal_Reality Посмотреть сообщение
char* oven = "D:\file.txt";
Надо D:\\file.txt
0
Unreal_Reality
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 8
11.11.2013, 21:27  [ТС] #6
warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\string.h(105): см. объявление "strcpy"
This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. - Предупреждение, которое выдает компилятор.

Добавлено через 2 часа 22 минуты
Насколько я поняла, это предупреждение не несет особой значительной нагрузки. Но программа отчего-то вылетает.... При этом появляется окошечко с надписью "Нарушение прав доступа при записи "0xcccccccc". И никакой текст не выводится...
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 1
12.11.2013, 09:01 #7
Попробуйте
C++
1
2
3
4
5
6
7
8
9
10
11
class Zodiak
{
public:
    //char *name;
    char n[];
 
........
 
void Zodiak::znak()
{  
strcpy(n, oven);
или
C++
1
2
3
4
5
6
7
8
9
10
11
class Zodiak
{
public:
    char *name;
    //char n[];
 
........
 
void Zodiak::znak()
{  
name = oven;
0
Unreal_Reality
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 8
12.11.2013, 14:56  [ТС] #8
SatanaXIII,
не помогает...
У меня есть предположение, что проблема заключается в памяти, что я не выделила памяти под эти строки...

Добавлено через 10 минут
Кто-нибудь может мнем с этим помочь? Толково объяснить про malloc и new? Нужны ли они здесь?
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,530
Завершенные тесты: 1
12.11.2013, 14:59 #9
Используйте std::string или char[80].
0
Unreal_Reality
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 8
12.11.2013, 15:27  [ТС] #10
SatanaXIII,
Я сделала char name[80] не вылетает, текст не выводится, но тут, я думаю, проблема заключается в другом. Спасибо вам!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2013, 15:27
Привет! Вот еще темы с ответами:

Объясните пожалуйста - C++
Есть код : char text=&quot;In&quot;; int a=sizeof(text); Вопрос : почему a = 3 ? ( там 2 символа вроде как )

Объясните пожалуйста - C++
char str; int count = 0; cout &lt;&lt; &quot;Enter string:&quot; &lt;&lt; endl; cin.getline(str, 255); for (int i = 0; str; i++) { ...

Объясните пожалуйста - C++
Как работает эта программа? #include &lt;iostream&gt; using namespace std; int main() { char mas1;

Объясните пожалуйста! - C++
Всем привет! Нашел код на форуме, который нужен, но не могу разобраться в нем! Программа переводит числа из десятичной в двоичную СС....


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
12.11.2013, 15:27
Ответ Создать тему
Опции темы

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