5 초 이내에 사용자가 입력 한 문자 수를 인쇄하려고합니다. 하지만 입력 버퍼를 가져 오는 중 일부 문제가 있습니다.stdin 및 입력 버퍼의 내부 작업
코드는 내가 항상 0 인 사용자와 출력 버퍼가 입력 한 입력을받지하고, 위의 코드에서
# include <signal.h>
# include <sys/time.h>
# define INTERVAL 3
# define MAX_SIZE 1024
char buffer[MAX_SIZE];
int count = 0;
void alarm_handler (int i)
{
printf("\r\n");
printf("\nTimer expired.....\r\n");
count = read(stdin,buffer,sizeof(buffer));
puts(buffer);
printf("count:%d\r\n",strlen(buffer));
exit(0);
}
int main()
{
signal(SIGALRM,alarm_handler);
alarm(INTERVAL);
setbuf(stdin, NULL);
printf("Start Triggering....\r\n");
while (1)
{
gets(buffer);
}
return;
}
스 니펫. 누구든지 무엇이 잘못되었는지 그리고 에 대한 해결책을 말해 주시겠습니까?
출력
++++++ Start Triggering.... akakakakakkaka Timer expired..... count:0
는하지만이에 대한 귀하의 의견을 제시하시기 바랍니다 아래의 출력을
++++++++++++++++++++++++++++++ Start Triggering.... akakakakakkaka Timer expired..... akakakakakkaka count:14
를 기대 해요.
새로운 사용자! 코드 스 니펫을 작성하는 방법을 배우십시오 ... 4 줄 간격으로 모든 줄을 들여 쓰거나 백틱으로 둘러 쌈으로써'인라인 코드'를 삽입하십시오. 더 쉽게 읽을 수있게 해줍니다. 예를 들어'# include' 문은'# '기호가 해석되는 방식 때문에 ** bold **로 표시됩니다 ... – Floris
한 번 더 ... 5 초 동안 "INTERVAL"을 계산하려고합니다. 3. 나는 아래의 코드에서 그 가치를 지켰다. 그러나 그것은 당신이 요구 한 것이 아니다. – Floris