Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
1

getche() и conio.h

18.05.2011, 22:08. Показов 3056. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый вечер. Есть программа, нужно скомпиллировать под линуксом, но там нету библиотеки conio.h;

Можете подсказать, на что и как можно заменить или же какие-то другие пути решения ?

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int i=0;
    int j;
    char** mmas =(char**) malloc(1*sizeof(char*));
    mmas[0] = (char*) malloc(sizeof(char));
    mmas[0][0] = '\0';
 
    while((i==0) || strcmp(mmas[i-1],"stop"))
    {
 
        mmas[i] = (char*) malloc(sizeof(char));
        j=0;
        char k;
        k = getch();
        while( k !=' ')
        {
            mmas[i][j] = k;
            j++; 
            mmas[i] = (char*) realloc(mmas[i],(j+1)*sizeof(char));
            k = getche();
        }
        mmas[i][j] = '\0';
 i++;
mmas =(char**)realloc(mmas,(1+i)*sizeof(char*));
    
}
    free(mmas[i-1]);
    mmas =(char**)realloc(mmas,(i-1)*sizeof(char*));
    i=i-2;
    for(i;i>=0;i--)
    puts(mmas[i]);
 
    return 0;
}
Добавлено через 56 секунд
p.s. прога считывает слова, затем выписывает их в обратном порядке(не задом наперед);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2011, 22:08
Ответы с готовыми решениями:

Функция getche( )
Имеется программа на С++ : #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; ...

Функция getche в С++
В книге Лафоре стр 111. есть код :#include &lt;iostream&gt; // для оператора cout #include &lt;cctype&gt; ...

Ошибка с getche();
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; struct...

Использование метода getche()
system(&quot;pause&quot;); return 0; }

10
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 22:31 2
getchar() - стандартная функция
1
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
18.05.2011, 22:51  [ТС] 3
Она немного не так работает, как нужно.
Кстати, когда копировал код - недоглядел:
там в строках 18, 19 вместо
C
1
2
                k = getch();
                while( k !=' ')
долно быть
C
1
2
                k = getche();
                while( k !=' ')
Если модератор будет просматривать - прошу поменять на это в первом посте)
0
4 / 4 / 4
Регистрация: 12.04.2011
Сообщений: 125
18.05.2011, 22:54 4
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <unistd.h>
#include <termios.h>
#include <sys/ioctl.h> 
 
int main()
{
        int i=0;
        int j;
        char** mmas =(char**) malloc(1*sizeof(char*));
        mmas[0] = (char*) malloc(sizeof(char));
        mmas[0][0] = '\0';
 
        while((i==0) || strcmp(mmas[i-1],"stop"))
        {
 
                mmas[i] = (char*) malloc(sizeof(char));
                j=0;
                char k;
 
                while( k !=' ')
                {
                        mmas[i][j] = k;
                        j++; 
                        mmas[i] = (char*) realloc(mmas[i],(j+1)*sizeof(char));
 
                }
                mmas[i][j] = '\0';
 i++;
mmas =(char**)realloc(mmas,(1+i)*sizeof(char*));
        
}
        free(mmas[i-1]);
        mmas =(char**)realloc(mmas,(i-1)*sizeof(char*));
        i=i-2;
        for(i;i>=0;i--)
        puts(mmas[i]);
 
        return 0;
}
попробуй так
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 22:55 5
Функция принимает любые видимые клавиши. А других вы, похоже, не вводите.
0
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
18.05.2011, 22:55  [ТС] 6
Может еще какой-то совет будет?)
Извиняюсь, не увидел постов... Пойду пробовать
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 22:57 7
Цитата Сообщение от N1K003 Посмотреть сообщение
Может еще какой-то совет будет?)
Извиняюсь, не увидел постов... Пойду пробовать
Можно использовать другую стандартную функцию: gets() или scanf().
0
166 / 164 / 27
Регистрация: 20.04.2010
Сообщений: 607
18.05.2011, 23:09 8
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "stdafx.h"
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <vector>
#include <ctype.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    char buff[512]={0};
    char word[64]={0};
 
    vector<string> str_buff;
    vector<string>::iterator it;
    bool stop = false;
    str_buff.push_back(" ");
    while(!stop)
    {
        gets(buff);
        for(int i = 0; i < strlen(buff);++i)
        {
            while(!isalpha(buff[i]))
                ++i;
            int j = 0;
            while(isalpha(buff[i]))
            {
                word[j]=buff[i];
                ++i;
                ++j;
            }
            if(strncmp(word,"stop",4)==0)
            {
                stop = true;
                break;
            }
            else
                str_buff.push_back(word);
            memset(word,0,64);          
        }
        memset(buff,0,512);
    }
    for(it = str_buff.end() - 1;it > str_buff.begin();it--)
        printf("%s\n",(*it).c_str());
    getchar();
    return 0;
}
другой путь решения. по идее должен работать на линуксе
1
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
18.05.2011, 23:13  [ТС] 9
Цитата Сообщение от VaLenOK007 Посмотреть сообщение
попробуй так
Вы удалили считывание k ? Или я что-то не заметил?

Цитата Сообщение от ValeryLaptev
Можно использовать другую стандартную функцию: gets() или scanf().
Смысл в том, что оно считывает посимвольно слова через, пока не натыкается на _пробел_stop_пробел_

Как можно сделать что-то подобное?
0
4 / 4 / 4
Регистрация: 12.04.2011
Сообщений: 125
18.05.2011, 23:17 10
Цитата Сообщение от N1K003 Посмотреть сообщение
Вы удалили считывание k ? Или я что-то не заметил?
упс, забыл пихнуть их обратно))) видимо пора спать
0
3 / 3 / 2
Регистрация: 14.05.2011
Сообщений: 55
18.05.2011, 23:21  [ТС] 11
Все, сделал гетчаром) Всем спасибо за помощь Выкладываю тут код, может кому-то пригодится.
Вводить слова одно за другим через пробел. Чтобы остановить ввод набрать _пробел_stop_пробел_ без знаков "_" и ввести(энтер)

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
        int i=0;
        int j;
        char** mmas =(char**) malloc(1*sizeof(char*));
        mmas[0] = (char*) malloc(sizeof(char));
        mmas[0][0] = '\0';
 
        while((i==0) || strcmp(mmas[i-1],"stop"))
        {
 
                mmas[i] = (char*) malloc(sizeof(char));
                j=0;
                char k;
                k = getchar();
                while( k !=' ')
                {
                        mmas[i][j] = k;
                        j++;
                        mmas[i] = (char*) realloc(mmas[i],(j+1)*sizeof(char));
                        k = getchar();
                }
                mmas[i][j] = '\0';
                 i++;
                mmas =(char**)realloc(mmas,(1+i)*sizeof(char*));
}
        free(mmas[i-1]);
        mmas =(char**)realloc(mmas,(i-1)*sizeof(char*));
        i=i-2;
        for(i;i>=0;i--)
        puts(mmas[i]);
 
        printf("\n");
        return 0;
}
0
18.05.2011, 23:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.05.2011, 23:21
Помогаю со студенческими работами здесь

Функция getche() не выполняется
В MVS 2015 не выполняется ф-ция getche() (в коде строка 52) по этому цикл выполняется всего один...

Getche() не возвращает введенный символ
в 13 строке не принимает getche #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std;...

Ввод выражения с помощью getche()
Доброго времени суток, программеры! Есть вопрос: вот хочу что бы когда пользователь вписывал...

Преобразование в число с помощью getche
программа должна выводить результат, который я ввожу с клавиатуры, но почему то она его не выводит...


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

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