Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> количество сохраняемых строк в массиве, как сохранять в массив только 6 строк? 
:(
    Опции темы
mossad
Дата 24.12.2008, 14:45 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



Что тут надо поравить. чтобы он обрабатывал только шесть строк:

Код

char* StrGet ( char *text,
           char buf[],
           unsigned len
         )
{
    cprintf ("\n\r%s = ", text );
    buf [0] = ( len > STRMAXLEN ) ? STRMAXLEN: len;
    cgets ( buf );
    if ( buf [1] == 0)
        return NULL;
    else
        return buf+2;
}


заранее спасибо)
PM MAIL   Вверх
andrew_121
Дата 24.12.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



mossad, Что-то я ваще не увидел тут какой-то логики, отвечающей твоей задаче.
По подробнее плиз...


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
mossad
Дата 24.12.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



Рассказываю поподробнее. у меня есть прога, которая сохраняет, введенный пользователем текст, в массив. На данной стадии проги может принять текст в одну строку не более 67 символов. У меня вопрос что нужно добавить в ко. чтобы таких строк было 6?
Сейчас код такой:

Код

#include <STDIO.H>
#include <CONIO.H>
#include <STRING.H>


void main    ( void );
void Title   ( char *txt );
char *StrGet ( char *text,
           char buf[],
           unsigned len
         );
int YesNo ( char *msg );
void Finish ( char *final );



#define STRMAXLEN 67
#define SBUFLEN ( STRMAXLEN - 2 )

char Str[ SBUFLEN ];

char *BEGIN = "\nProgramm seacher";
char *TEXT  = "\nType text";
char *QUERY = "\nRepeat";
char *FINAL = "\nWork is finished!";


void main ( void )
{
  do{
    Title  ( BEGIN );
    StrGet("Type text: ", Str, SBUFLEN );
  } while ( YesNo ( QUERY ) );
    Finish ( FINAL );
}


void Title ( char *txt )
{
    cprintf( "\n\r%s", txt );
    fflush ( stdin );
}

char* StrGet ( char *text,
           char buf[],
           unsigned len
         )
{
    cprintf ("\n\r%s = ", text );
    buf [0] = ( len > STRMAXLEN ) ? STRMAXLEN: len;
    cgets ( buf );
    if ( buf [1] == 0)
        return NULL;
    else
        return buf+2;
}






int YesNo ( char *msg )
{
int c;

    cprintf( "\n\r%s [Y/N]? ", msg );
    fflush( stdin );
    c = getchar();
    if ( (c == 'y') || (c == 'Y') )
        return 1;
    else
        return 0;
}

void Finish ( char *final )
{
    cprintf ( "\n\r%s", final );
}






PM MAIL   Вверх
xvr
Дата 24.12.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Строку 20 поменять на 
Код

char Str[6][ SBUFLEN ];
Тело цикла в строках 30-33 сделать таким
Код

 int line_count=0;
  do{
    Title  ( BEGIN );
    StrGet("Type text: ", Str[line_count++], SBUFLEN );
  } while ( line_count<6 && YesNo ( QUERY ) );

PM MAIL   Вверх
mossad
Дата 24.12.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



Спасибо за ответ, но она попрежнему доводит до 67 позиции и больше не кушает(((
PM MAIL   Вверх
xvr
Дата 24.12.2008, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(mossad @ 24.12.2008,  18:36)
Спасибо за ответ, но она попрежнему доводит до 67 позиции и больше не кушает(((

Не понял, а что она делает? Давится?  smile Строки (6 шт) вводит?

PM MAIL   Вверх
mossad
Дата 24.12.2008, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



т.у принимает только первую строку в 67 символов. а дальше не идет.(
PM MAIL   Вверх
invader
Дата 25.12.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.12.2008

Репутация: нет
Всего: нет



тебе нужно чтобы программа принимала многострочный ввод или просто по очереди 6 строк?
PM MAIL   Вверх
mossad
Дата 3.1.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 22.12.2008

Репутация: нет
Всего: нет



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

PM MAIL   Вверх
xvr
Дата 5.1.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(mossad @ 3.1.2009,  11:56)
наверное многострочный, т.е автоматом переводила курсор на начало следующей но таких строк не больше пяти((
спасиб за ответ))

Тогда это не к программе, а к ОС. Консольный ввод в ОС может работать в разных режимах, по умолчанию он работает в режиме редактирования строки: ОС самостоятельно осуществляет ввод (и редактирование) строки, и только когда пользователь нажмет Ввод, все, что наредактировалось, отправляется программе в виде потока символов. 
Если нужно автоматически переводить строку и делать автоматический многострочный ввод, то поток ввода нужно переключать в посимвольный режим и все редактирование осуществлять самому.
В Windows за режим ввода (и вывода) отвечает функция SetConsoleMode

Это сообщение отредактировал(а) xvr - 5.1.2009, 12:34
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.