logo

C의 printf()와 scanf()의 차이점

소개:

인쇄() 그리고 스캔프() 다음을 수행하는 C 언어에 내장된 라이브러리 함수입니다. 형식화된 입력 그리고 형식화된 출력 기능. 이러한 함수는 다음에서 정의되고 선언됩니다. stdio.h 헤더 파일 . 그만큼 '에프' ~에 printf 그리고 스캔프 약자 '포맷' . 따라서 두 기능 모두 프린트프() 그리고 스캔프() 형식 문자열 내의 코드를 사용하여 출력 또는 입력 값의 형식을 지정하는 방법을 지정합니다. 사용할 헤더 파일을 가져와야 합니다. 프린트프() 그리고 스캔프() :

 #include 

이 기사에서는 printf()와 scanf()의 차이점에 대해 설명하지만 차이점을 논의하기 전에 printf()와 scanf()에 대해 구문과 예제를 알아야 합니다.

인쇄():

그것 인쇄물 사이의 무엇이든 큰따옴표 ~와 함께 형식 지정자 %c, %d,%f, 등을 사용하여 변수나 상수의 값을 표시하고 다음과 같은 이스케이프 시퀀스 문자를 사용할 수도 있습니다. , ~을 위한 개행, 그리고 가로 탭 , 각각.

Node.js Base64 디코드

통사론:

 printf('(string) %format_specifier (string)',variable); 

스캔프():

이를 통해 사용자가 콘솔의 키보드를 통해 입력한 하나 이상의 값을 읽을 수 있습니다. 우리는 많이 배치할 수 있습니다 형식 지정자 형식이 있든 없든 우리가 원하는 만큼의 입력을 얻을 수 있습니다.

통사론:

 scanf(%format_specifier, &pointer_to_variable); 

형식 지정자 문자열:

첫 번째 매개변수에는 printf 그리고 스캔프 , 우리는 통과 형식 문자열 또는 형식 지정자 문자열 , 사용자가 입력할 값 유형을 지정합니다.

데이터 형식 변환 형식 문자열
정수 짧은 정수 %d 또는 %i
부호 없는 짧은 % 안에
오랫동안 서명한 %ld
오랫동안 서명되지 않은 % 루
부호 없는 16진수 %x
부호 없는 8진수 %영형
진짜 뜨다 %f 또는 %g
더블 %lf
서명된 문자 %씨
서명되지 않은 문자 %씨
%에스

예를 들어, 사용자가 다음을 입력하면 이십 입력으로 이십 십진수 값 , 우리는 다음을 사용하여 C의 모든 십진수 값을 지정합니다. %d 형식 지정자 . 비슷하게, 부동 소수점 값 다음을 사용하여 지정됩니다. %에프 .

Printf() 및 Scanf()의 기본 코드:

예시 1:

 #include int main() { int a, b; int sum = 0, sub = 0, mul = 0; printf('Please enter the two values:'); /* Read input */ scanf('%d%d', &a, &b); sum = a+b; sub = a-b; mul = a*b; /* Print output */ printf('The sum = %d 
sub = %d 
mul = %d', sum, sub, mul); return 0; } 

산출:

 Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48 

설명:

배쉬 배열

위 프로그램에서 우리는 스캔프() 콘솔에서 입력을 읽고 변수에 저장합니다. a & b. 그 후에는 다음과 같은 산술 연산을 수행합니다. 덧셈 , 빼기 , 그리고 곱셈 나중에 결과를 세 개의 새로운 변수(Sum, Sub, Mul). 마지막으로 printf() 함수 , 결과를 인쇄하고 있습니다.

예 2:-

 #include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; } 

위 프로그램에서, 스캔프() 우리가 지정했기 때문에 하나의 변수를 전달하더라도 프로그램에서 두 개의 입력을 읽습니다. 두 가지 형식 지정자 . 항상 기억하세요. 스캔프()/프린트프() 모든 형식 지정자 우리가 전달하는 값은 동일해야 합니다. 그렇지 않으면 예상치 못한 런타임 오류가 발생할 수 있습니다.

예시 3:

 int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; } 

산출:

 5 Execution finished... 

설명:

위 프로그램에서, 스캔프() 우리가 지정했기 때문에 사용자로부터 단 하나의 입력만 읽습니다. 하나의 형식 지정자 . 따라서 이 예에서 우리는 입력 수에 따라 어떤 입력도 사용되지 않을 것이라고 결론을 내립니다. 형식 지정자 .

예시 4:

 #include int main() { int a; scanf('%d', a); printf('Execution finished'); } 

산출:

 6 Segmentation fault 

설명:

위 프로그램에서는 변수의 값을 스캔프() 변수 주소 대신. 그것은 다음으로 이어질 것입니다 런타임 에러 . Linux에서는 분할 오류 오류가 발생합니다.

sqrt 자바 수학

예시 5:

 #include int main() { int a = 10; int b = 20; printf('the value of a = %d, the value of b = %d', a, b); } 

산출:

 the value of a = 10, the value of b = 20 

설명:

위 프로그램에서, printf 형식 문자열을 스캔하면 형식 지정자(%d) 우리가 전달하는 실제 값으로 프린트프() . 즉, 첫 번째 형식 지정자는 우리가 전달한 첫 번째 값으로 대체됩니다. 프린트프(), 등등.

Printf()와 Scanf()의 기본 차이점

printf와 scanf의 몇 가지 차이점은 다음과 같습니다.

    printf() 함수 데이터를 표준 출력, 즉 콘솔로 출력합니다. 대조적으로, scanf() 함수 표준 입력, 즉 입력 장치에서 데이터를 읽습니다. 프린트프() 어떤 경우에는 포인터를 거의 사용하지 않지만 스캔프() 항상 포인터를 사용하여 주어진 변수에 값을 할당합니다. 프린트프() 그리고 스캔프() 둘 다 동일한 반환 유형을 갖습니다. 정수 . 그만큼 프린트프() 콘솔에 성공적으로 인쇄된 문자 수를 반환하는 반면, 스캔프() 보고 0,1 또는 EOF 제공된 형식 지정자를 기반으로 합니다.