URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9998
[ Назад ]

Исходное сообщение
"Нажатие клавиши. С#. Нужен пример"

Отправлено Black_Ru , 04-Май-15 13:28 
Нужен такой пример в учебных целях.
Консольная программа ожидает ввода, нажимается клавиша, навпример, стрелка вверх,
Выводит сообщение. Программа опять ждет.

Содержание

Сообщения в этом обсуждении
"Нажатие клавиши. С#. Нужен пример"
Отправлено Pahanivo , 04-Май-15 16:49 
> Нужен такой пример в учебных целях.
> Консольная программа ожидает ввода, нажимается клавиша, навпример, стрелка вверх,
> Выводит сообщение. Программа опять ждет.

хм странные у студентов нонче подходы )))


"Нажатие клавиши. С#. Нужен пример"
Отправлено Black_Ru , 04-Май-15 18:42 
>> Нужен такой пример в учебных целях.
>> Консольная программа ожидает ввода, нажимается клавиша, навпример, стрелка вверх,
>> Выводит сообщение. Программа опять ждет.
> хм странные у студентов нонче подходы )))

Ну я не студент, конечно... кодер-любитель :)

Но вопрос пока снят, сделал через scanf.
Вообще почти все сделал, вот только не пойму, как в си избавиться от exit status by default и вернуться в начало программы.


"Нажатие клавиши. С#. Нужен пример"
Отправлено Black_Ru , 04-Май-15 19:08 
>>> Нужен такой пример в учебных целях.
>>> Консольная программа ожидает ввода, нажимается клавиша, навпример, стрелка вверх,
>>> Выводит сообщение. Программа опять ждет.
>> хм странные у студентов нонче подходы )))
> Ну я не студент, конечно... кодер-любитель :)
> Но вопрос пока снят, сделал через scanf.
> Вообще почти все сделал, вот только не пойму, как в си избавиться
> от exit status by default и вернуться в начало программы.

Все, понял.
Видимо, в читстом С# просто так нажатия стрелок не отловить, нужно подключать ncurses.
С зацикливанием тоже разобрался.


"Нажатие клавиши. С#. Нужен пример"
Отправлено Аноним , 04-Май-15 21:54 
На вот, гугель дал:
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    class Program
    {
        [DllImport("msvcrt")]
        static extern int _getch();

        static void Main(string[] args)
        {
            Console.WriteLine("Hello world");
            Console.WriteLine("Press any key to end..");
            _getch();
        }
    }
}


"Нажатие клавиши. С#. Нужен пример"
Отправлено Black_Ru , 04-Май-15 22:33 
>[оверквотинг удален]
>         {
>            
> Console.WriteLine("Hello world");
>            
> Console.WriteLine("Press any key to end..");
>            
> _getch();
>         }
>     }
> }

Спасибо, конечно. Но DLL  - это что-то не то. Хотел всего лишь такое сделать, листалку.
Делается с ncurses, как я уже и сказал!

Источники:
http://www.gnu.org/software/guile-ncurses/manual/html_node/G...
https://code-live.ru/post/terminal-mode-management-ncurses/
А таже учебник Керниган и Риччи

#include <stdio.h>
#include <ncurses.h>
int main () {
  
initscr();
keypad(stdscr, true);

int n;  

   noecho();
   printw(" Hello! Press arrows! Or F2 to exit ");
  
int incr (n) {
  
  FILE *file;
    struct symb {
        char name[20];
        
    };
    
    
    struct symb shop[255];char *ff = "bd/";

char *end = ".txt";
char fille[100];
sprintf(fille, "%s%d%s", ff, n, end);
    
      char i=0;


    
    if ((file = fopen(fille, "r"))==NULL) {
      printw("Can't open file \n");
         return (0);
    }
    else {

    while (fscanf (file, "%s", shop[i].name) != EOF) {
        printw("%s ", shop[i].name);
        i++;
        
        }
close(file);
              
    }
            
}

    while ( true ) {  
    
    int ch = getch();

      if (ch ==KEY_LEFT) {
  n++;
  incr (n);
  
}
    if (ch ==KEY_RIGHT) {
  --n;
      if (n < 0) {
    n = 1;
  }
    incr (n);  

      
    }
        
    if (ch ==KEY_F(2)) {
      break;
      
    
    }
      
    }
    
    getch();
    endwin();
    return 0;
    exit(0);
  
}


"Нажатие клавиши. С#. Нужен пример"
Отправлено Black_Ru , 04-Май-15 22:35 
>[оверквотинг удален]
>  }
>     if (ch ==KEY_F(2)) {
>       break;
>  }
>     }
>     getch();
>     endwin();
>     return 0;
>     exit(0);
> }

НО без ncurses даже кошернее и код проще... Подумаешь - энтер еще нажимать =)


"Нажатие клавиши. С#. Нужен пример"
Отправлено Pahanivo , 05-Май-15 07:22 
С# ????



"Нажатие клавиши. С#. Нужен пример"
Отправлено Raven , 05-Май-15 08:22 
> С# ????

Если с ncurses это си ++ ?


"Нажатие клавиши. С#. Нужен пример"
Отправлено Аноним , 06-Май-15 04:29 
>> С# ????
> Если с ncurses это си ++ ?

Не обязательно. Но сверху не C#.


"Нажатие клавиши. С#. Нужен пример"
Отправлено Black_Ru , 06-Май-15 08:28 
>>> С# ????
>> Если с ncurses это си ++ ?
> Не обязательно. Но сверху не C#.

Хорошо, что это?

Т.е. компилятор gcc настолько компиляторный компилятор, что может скомпилировать любую куйню, которая визуально издалека нампоминает код С#?


"Нажатие клавиши. С#. Нужен пример"
Отправлено Pahanivo , 06-Май-15 10:31 
> Т.е. компилятор gcc настолько компиляторный компилятор, что может скомпилировать любую
> куйню, которая визуально издалека нампоминает код С#?

Если ты считаешь что С# это коротко записанное название С++ - ты ошибаешься ))


"Нажатие клавиши. С#. Нужен пример"
Отправлено Black_Ru , 06-Май-15 11:39 
>> Т.е. компилятор gcc настолько компиляторный компилятор, что может скомпилировать любую
>> куйню, которая визуально издалека нампоминает код С#?
> Если ты считаешь что С# это коротко записанное название С++ - ты
> ошибаешься ))

Я понимаю, что это два разных языка, но вроде как C++ рассматривается как надстройка над C
Т.е. как бы более высокий уровень абстракции, как это принято говорить...
Или опять я не прав.


"Нажатие клавиши. С#. Нужен пример"
Отправлено Black_Ru , 06-Май-15 11:44 
>> Т.е. компилятор gcc настолько компиляторный компилятор, что может скомпилировать любую
>> куйню, которая визуально издалека нампоминает код С#?
> Если ты считаешь что С# это коротко записанное название С++ - ты
> ошибаешься ))

Ну хотя , конечно, в чистом си     while ( true ) {  
вообще такого нет, только после объявления ncurses.


"Нажатие клавиши. С#. Нужен пример"
Отправлено Аноним , 06-Май-15 22:31 
> Ну хотя , конечно, в чистом си     while ( true ) {
> вообще такого нет, только после объявления ncurses.

пляяяя ... придушите его кто нибудь чтоб уже не мучался :)


"Нажатие клавиши. С#. Нужен пример"
Отправлено Аноним , 06-Май-15 04:27 
> Делается с ncurses, как я уже и сказал!

деточко, то что ты подобрал - _не_C# :)


"Нажатие клавиши. С#. Нужен пример"
Отправлено Black_Ru , 06-Май-15 11:56 
Выбрасываю из код все лишнее. Все еще не С#?

#include <stdio.h>

main () {


int n;  
  
int incr (n) {
  
FILE *fp;  

    
    char *ff = "bd/";

char *end = ".txt";
char fille[100];
sprintf(fille, "%s%d%s", ff, n, end);
    
      char i=0;

int c;    

    if ((fp=fopen(fille, "r"))==NULL) {
      printf("Can't open file \n");
    exit(0);
    }
    else {

while ((c = getc(fp))!=EOF) {
putc(c, stdout);

      }
            
    }
  
  close(fp);
  printf("\n");
  
}
        
        
int button;

while (button != 1) {

printf (" Press 0 to go next page, 9 to previous, 1 to exit \n\n");
scanf("%d", &button);

if (button == 0) {
  
  n++;
  incr (n);
  printf ("\n");
  
  }
  
  if (button == 9) {
     n--;
     if (n < 0) {
n = 0;
  }

  incr (n);
  printf ("\n");
  
  }
  
   if (button ==1) {
    printf (" Exit! ");
    exit(0);
    
    }
    
    }
}


"Нажатие клавиши. С#. Нужен пример"
Отправлено Аноним , 06-Май-15 22:30 
> Выбрасываю из код все лишнее. Все еще не С#?

Нет :)
А ты реально тупишь или это такой стиль троллинга?


"Нажатие клавиши. С#. Нужен пример"
Отправлено Alex_S , 07-Май-15 08:35 
> Выбрасываю из код все лишнее. Все еще не С#?

вот все, кроме этого - си шарп

а это - грязный си