어떻게 printf ("prompt :")가 즉시 인쇄되지 않습니까? 나는 fflush (stdout)을 시도하고 \ n하지만 그 중 아무 것도 작동하지 않았다. 그것은 단지 인쇄 때 인쇄 "를 참조하십시오"C 프로그램의 혼란스러운 동작, printf
int main() {
char line[1025];
char command[80], argument[80];
char argv[3][80];
int i, pid;
*(argv[2]) = '\0';
while((fgets(line, 1024, stdin))) {
printf("prompt:");
line[1024] = '\0';
sscanf(line, " %s %s ", command, argument);
if(strcmp(command, "exit") == 0 || strcmp(command, "hastalavista") ==
0) {
printf("See you\n");
exit(0);
}
}
return 0;
}
나는 fgets' 그것의 가장 첫 번째 1024 바이트의 전체 라인 및 저장을 기다리는'있다고 생각합니다. –
@BasileStarynkevitch'fgets'의 두 번째 매개 변수는 "읽을 최대 문자 수"를 지정합니다. 1024 바이트가 수신되면 읽기를 중지합니다. – Swanand
줄 바꾸기가 발생하면 읽기를 중지합니다. 또한 반환되는 키가 1024 자보다 많든 적은 지 여부에 관계없이 반환 키를 눌러 프로그램에 데이터를 보낼 때까지 아무 것도 반환하지 않습니다. 일부 시스템에서는 터미널 드라이버가 한 줄에 1024자를 허용하지 않습니다. 한계는 256 바이트 정도로 작습니다. –