, - .
, -.
. , , - .
MAX_INPUT _POSIX_MAX_INPUT;
.
, , .
, :
scanf ?
2- . scanf 4096 , - 4096 .
- , , ?
, - . scanf.
EDIT:
.
, .
:
#include <stdio.h>
#include <string.h>
#include <termios.h>
#include <unistd.h>
int clear_icanon(void)
{
struct termios settings;
int result;
result = tcgetattr (STDIN_FILENO, &settings);
if (result < 0)
{
perror ("error in tcgetattr");
return 0;
}
settings.c_lflag &= ~ICANON;
result = tcsetattr (STDIN_FILENO, TCSANOW, &settings);
if (result < 0)
{
perror ("error in tcsetattr");
return 0;
}
return 1;
}
int main()
{
clear_icanon();
char input_array[5000];
int len;
printf("Enter key: ");
scanf("%s",input_array);
len = strlen(input_array);
printf("Message: %s\n",input_array);
printf("Message Len: %d\n",len);
return 0;
}
,
$ stty -icanon (changes the input mode to non-canonical)
$ stty icanon (changes it back to canonical)
: ( )
, , , cooked ( ) cbreak raw.
cbreak, , , , .
stty cbreak .
cbreak
curses,
$ sudo apt-get install libncurses5-dev
:
#include <stdio.h>
#include <string.h>
#include <curses.h>
int main()
{
initscr();
cbreak();
endwin();
char input_array[5000];
int len;
printf("Enter key:");
scanf("%s",input_array);
len = strlen(input_array);
printf("Message:%s\n",input_array);
printf("Message Len:%d\n",len);
return 0;
}
-lcurses
$ gcc 1.c -lcurses