반응형
스캔f() 발행전 C/C++ printf()
저는 이클립스를 사용하여 C/C++로 코딩하고 있는데 꽤 쉬운 일이 무엇인지 고민하고 있습니다.아래의 내 코드에서 나는 다음과 같이 사용합니다.printf()
그 후에scanf()
. 비록printf
앞에 적습니다.scanf()
생산량이 다릅니다.저는 여기서 비슷한 문제에 대해 알아낼 수 있었습니다.하지만 저는 그것을 풀지 못했습니다.무슨 생각 있어요?
코드:
#include <stdio.h>
int main()
{
int myvariable;
printf("Enter a number:");
scanf("%d", &myvariable);
printf("%d", myvariable);
return 0;
}
예상 출력:
Enter a number:1
1
대신에 나는 다음을.
1
Enter a number:1
출력을 버퍼링하고 있습니다.다음 4가지 옵션이 있습니다.
노골적인 홍조
fflush
각 쓰기가 끝나면 버퍼에서 이익을 얻으면서도 원하는 동작/표시를 명시적으로 시행합니다.fflush( stdout );
버퍼를 버퍼 라인 단위로만 사용합니다.
완전한 선만 인쇄해도 충분하다는 것을 알 때 유용합니다.
setlinebuf(stdout);
버퍼를 비활성화합니다.
setbuf(stdout, NULL);
콘솔에서 제공하는 옵션 메뉴를 통해 버퍼링 사용 안 함
예:
다음은 옵션 1의 코드입니다.
#include <stdio.h>
int main() {
int myvariable;
printf("Enter a number:");
fflush( stdout );
scanf("%d", &myvariable);
printf("%d", myvariable);
fflush( stdout );
return 0;
}
여기 2:
#include <stdio.h>
int main() {
int myvariable;
setlinebuf(stdout);
printf("Enter a number:");
scanf("%d", &myvariable);
printf("%d", myvariable);
return 0;
}
그리고 3:
#include <stdio.h>
int main() {
int myvariable;
setbuf(stdout, NULL);
printf("Enter a number:");
scanf("%d", &myvariable);
printf("%d", myvariable);
return 0;
}
좋아요, 그래서 마침내 저는 @zsawyer가 3이라는 옵션으로 쓴 것과 비슷한 것을 사용했습니다.내 코드에 다음 행을 삽입했습니다.
setvbuf(stdout, NULL, _IONBF, 0);
주()의 첫 번째 줄로:
#include <stdio.h>
int main()
{
setvbuf(stdout, NULL, _IONBF, 0);
int myvariable;
printf("Enter a number:");
scanf("%d", &myvariable);
printf("%d", myvariable);
return 0;
}
여기서 받았습니다.
언급URL : https://stackoverflow.com/questions/16877264/c-c-printf-before-scanf-issue
반응형
'programing' 카테고리의 다른 글
MariaDB 다양한 Debian 9 서버 및 Rails 앱에서 Active Record를 간단하게 사용할 수 있는 점이 특이합니다. (0) | 2023.09.20 |
---|---|
스프링 기반 SockJS/STOMP 웹 소켓이 있는 JSON 웹 토큰(JWT) (0) | 2023.09.20 |
OQGRAPH 쿼리에서 노드 간의 관계를 선택할 수 있습니까? (0) | 2023.09.20 |
VBA를 사용하여 명명된 범위를 정의하려면 어떻게 해야 합니까? (0) | 2023.09.20 |
MySQL/MariaDB의 다중 조인에서 값이 가장 낮은 요소 선택 (0) | 2023.09.20 |