Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2013, 00:21   #1
Павел_95
Пользователь
 
Регистрация: 04.11.2012
Сообщений: 22
По умолчанию Точка останова

1)Народ, нужна помощь... Не могу понять,что это за ошибка указанная на скрине.
2)И еще 1 вопрос:
Вот у меня есть массив символов, который я хочу сохранить для подальшей с ней работой. Но, видимо я что-то делаю не так. Больше всего меня заботит правильно ли я возвращаю массив или нет (return text1[kol_sim]
Код функции:
Код:
char save_text()
{

int c;
int kol_sim = 1;

char *text1= new char[kol_sim]; //создаем динамический массив

while((c=getchar()) != EOF)  //заполняем массив символами, пока не будет EOF
	{
		text1[kol_sim] = c;
		kol_sim++;
	}

text1[kol_sim + 1]= '\0';  //последний символ строки

return text1[kol_sim]; // вот тут я больше всего и заблуждаюсь, если все же это не правильно, пожалуйста, предложите альтернативу или исправьте ошибку.
delete []text1;
}
Изображения
Тип файла: jpg загрузить.jpg (316.7 Кб, 146 просмотров)
Павел_95 вне форума Ответить с цитированием
Старый 06.01.2013, 00:38   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Насчет ошибки на скрине не могу ничего сказать.
Вы выделяете память под 1 символ, а читаете "несколько" больше.
Таким return Вы возвращаете 1 символ.
После return никакие команды не выполняются.

Например, считывание из произвольного файла (можно передать stdin):
Код:
enum { START_RESERVE_SIZE = 80 };

char *
save_text(FILE *f)
{
    char *str = NULL;
    int reserve = 0, count = 0, c = 0;
    while ((c = getc(f)) != EOF) {
        if (count == reserve) {
            if (!(reserve *= 2)) {
                reserve = START_RESERVE_SIZE;
            }
            str = realloc(str, reserve * sizeof(str[0]));
        }
        str[count++] = c;
    }
    if (str) {
        str = realloc(str, (count + 1) * sizeof(str[0]));
        str[count] = 0;
    }
    return str;
}
Не забудьте освободить потом указатель, который вернет функция.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] не работают точки останова VVkSoft Общие вопросы Delphi 9 31.10.2011 15:16
Точки останова Spot Общие вопросы Delphi 8 24.07.2010 19:56
OC Windows инициировала точку останова в ... androidvsu Помощь студентам 6 19.09.2009 14:14
Не работает точка останова в Дельфи grenles Общие вопросы Delphi 4 17.12.2008 11:26