4096 바이트보다 큰 입력 스트림을 받아 들여야하는 작은 C 프로그램을 작성하고 있습니다.STDIN 스트림에서 setvbuf() 사용
여기)을 setvbuf를 (사용 권장 게시물을 발견했다 :
Making fgets issue longer read() calls on linux
난 아직이 작업을 점점 정말 힘든 시간을 보내고있어 - 여기 내 코드의 비트의 그 I 고민 중입니다 :
int main(void)
{
#define MAX_STRING_SIZE 7168
char input_string[MAX_STRING_SIZE];
printf("Input: ");
setvbuf(stdin, NULL, _IONBF, 0);
fgets(input_string, MAX_STRING_SIZE-1, stdin);
printf("\n");
printf("%s", input_string);
}
아무도이 입력 버퍼를 증가시키지 않았습니까?
내 환경 : 빌드 - 필수 패키지
감사와 우분투 10.10!
'fgets()'대신'fread()'를 사용하면 어떨까요? –
난 그냥 fread() 시도했지만 같은 문제가있는 것 같다. 입력을 요구할 때 터미널 창에 4096 바이트 만 붙여 넣을 수 있습니다. – Nate
그래서 응용 프로그램에서 데이터를 터미널에 "붙여 넣어야"합니까? 파일 리디렉션'<'연산이 사용되면'fread()'와'fgets()'조차도 괜찮을 것입니다. 물론 캐릭터별로 데이터를 읽을 수 있습니다. 확실히 작동해야합니다. –