Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

для завершения вместо ввода нажатие <Enter>

10K
14 июня 2010 года
trinitro
48 / / 14.06.2010
Можно ли в таком коде
Код:
#include "stdio.h"
#include "conio.h"
#include "string.h"

#define FNAME "C:\\phone.txt\0"

void main()
{

    char fname[20]=FNAME;
    FILE *out;

    char fam[20];
    char name[20];
    char tel[9];
    int  k;

    puts("\nТелефонный в справочник");
    puts("После каждого ввода нажимаете <Enter>");

    if ((out=fopen(fname,"at")) == NULL)
    {
        printf("Error open file");
        getch();
        return;
    }

    k=getch();

    while(k!=10)
    {
        printf("Фамилия ->");
        scanf("%s",&fam);

        printf("Имя ->");
        scanf("%s",&name);

        printf("Телефон ->");
        scanf("%s",&tel);

        fprintf(out, "%s %s %s", fam, name, tel);
        puts("Информация добавлена");
    }


    printf("Ввод завершён");
    fclose(out);
    getch();
}


сделать так, чтобы ввод данных завершался нажатием <Enter>.
Примерно так:

"Фамилия ->
Ввод завершён
Для завершения работы нажмите <Enter>"
2.1K
14 июня 2010 года
Norgat
452 / / 12.08.2009
getch() возвращает код нажатой клавиши... по нему и проверяй какая была нажата...

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

код возвращается в виде числа типа int, которое при желании, можно привести к char:

 
Код:
int ch = getch();

if(ля-ля-ля, проверки)
{
 //если ввели символ
cout << (char)ch << endl;
}


коды символов смотри в аски таблицах, ну или просто сделай тестовый примерчик себе.
10K
14 июня 2010 года
trinitro
48 / / 14.06.2010
Спасибо.
Но манипуляции с getch() не получаются

Надо сделать чтобы рабочая прога имела такой вид:

Фамилия ->бла1
Имя ->бла1 бла1
Телефон ->12345
Информация добавлена

Фамилия ->бла2
Имя ->бла2 бла2
Телефон ->12345
Информация добавлена

Фамилия ->
Ввод завершён
Для завершения работы нажмите <Enter>

Что подправить в коде?
2.1K
14 июня 2010 года
Norgat
452 / / 12.08.2009
%)

 
Код:
k=getch();
while(k!=10)

а что ты делаешь здесь по твоему?

добавь в конец while k = getch(); и получишь цикл работающий, пока нажимается 'Enter', если нажимают другую клавишу - ввод информации заканчивается...

Код:
k=getch();

    while(k!=13)
    {
        printf("Фамилия ->");
        scanf("%s",&fam);

        printf("Имя ->");
        scanf("%s",&name);

        printf("Телефон ->");
        scanf("%s",&tel);

        fprintf(out, "%s %s %s", fam, name, tel);
        puts("Информация добавлена");
                k = getch();
    }


п.с. код 'Enter' равен 13(в десятичной системе счисления)
10K
14 июня 2010 года
trinitro
48 / / 14.06.2010
Спасибо большое за помощь, заработало! Не додумал немного до k = getch() в теле цикла, размещал код вне его.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог