문제

저는 C 프로그래밍을 처음 사용하고 자바 배경에서 왔습니다. 다음 코드에서 왜 while 루프에서 입력을 10 번 입력 해야하는지 궁금했습니다. 그런 다음 10 개의 입력이 모두 표시됩니다. 나는 한 번 무언가를 입력하려고 노력하고 바로 그 뒤에 표시되도록 노력하고 있습니다. 그런 다음 다른 입력을 계속 입력하십시오.

#include <stdio.h>
#include <stdlib.h>
#include "Helper.h"


main(){

print(PROGRAM_INFO); //prints program name and author
print(PROMPT);

char input [100]; //array to hold input from user
int isActive = 1; //1 continue shell, 0 terminate shell
int count = 0;

while (isActive == 1 && count < 10){
    print(PROMPT);
    ++count;
    scanf("%s", input);
    print(input);


}


}
도움이 되었습니까?

해결책

플러싱을 시도하십시오 fflush(stdout) 각각 print(input)

다른 팁

인쇄물에 ' n'문자를 넣으십시오. 스트림은 단지 플러시되지 않습니다.

최종 인쇄문 후에는 아마도 fflush (stdout)를 호출 할 수 있습니다. 화면에 stdout을 플러시합니다.

stdout을 플러시해야합니다. fflush(STDOUT) 인쇄 후 추가해야합니다.

기본적으로 입력/출력이 버퍼링됩니다. 즉, 입력 및 출력 바이트는 스트림에 표시되기 전에 바이트 어레이에 저장됩니다.
시스템의 Bufsiz는 일반적으로 1024의 배수입니다. Altough Printf는 라인 버퍼링되어 버퍼가 Newline이 발생하면 자동으로 플러시됩니다.
fflush (stdout) 버퍼링 된 데이터 가이 경우 STDOUT 인 출력 스트림으로 플러시됩니다. 사용 버퍼 처리를 제어 할 수 있습니다 setvbuf () 기능

당신의 print 복사/페이스트 오류가 맞습니까? 그것은해야한다 printf.

그리고 실제로 사용자 문자열을 printf 형식으로 직접 인쇄해서는 안됩니다.
사용자 유형을 상상해보십시오 "%d%f%s\a%c" ...

가장 좋은 일은입니다

printf("%s\n", input);

형식의 ' n'을 사용하면 fflush(stdout); stdout은 기본적으로 라인 버퍼링되고 ' n'은 자체적으로 수행하기 때문입니다.

게다가, 사용자가 입력 한 경우 "%d%f%s\a%c" 그것이 당신이 인쇄하는 것입니다.


가장 좋은 일은입니다

puts(input);

Puts는 출력에 ' n'을 추가하고 형식 문자열에 아무런 문제가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top