기술나눔

C 언어 - printf, scanf, 기타 입력 및 출력 기능

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

printf 함수

1.printf 함수의 일반적인 형식:


printf 함수의 일반적인 형식은 printf(형식 제어, 출력 목록)입니다.
예를 들어:

printf("%d,%cn",i,c);

(1) "형식 제어"

이는 "변환 제어 문자열" 또는 줄여서 "형식 문자열"이라고 하는 이중 아포스트로피로 묶인 문자열입니다. 여기에는 두 가지 정보가 포함됩니다.
① 형식문. 형식 선언은 "%"와 %d, %f 등과 같은 형식 문자로 구성됩니다. 그 기능은 출력 데이터를 지정된 형식으로 변환한 다음 출력하는 것입니다. 형식 선언은 항상 "%" 문자로 시작됩니다.

그중 d는 10진수 정수, c는 단일 문자, s는 여러 문자, f는 10진수, x는 16진수 형식의 출력, p는 16진수 형식으로 출력되는 인쇄 메모리 주소를 나타냅니다. 가변 주소 연산 기호 &를 사용합니다.
② 일반 문자. 일반 문자는 출력 중에 변경되지 않고 출력되어야 하는 문자입니다. 예를 들어, 위의 printf 함수에서 이중 쉼표 내의 쉼표, 공백 및 개행 문자에는 다른 문자도 포함될 수 있습니다.


(2) "출력 테이블 열"

프로그램이 출력해야 하는 데이터는 상수, 변수 또는 표현식일 수 있습니다.

메모:
(1) 강제변환 : 정수를 십진수로 변환
  1. int data = 10;
  2. int chushu = 3;
  3. float result;
  4. result = (float)data/chushu;
(2) 데이터 너비와 소수점 이하 자릿수를 지정하고 %m.nf를 사용합니다.
출력 데이터가 소수점 이하 2자리를 포함해 7개 열을 차지하도록 지정하기 위해 "%7.2" 형식이 사용되었습니다. 마지막 숫자는 반올림됩니다. 즉, 대략적인 값은 위쪽 또는 아래쪽으로 가져옵니다. 여래가 소수부를 0으로 지정하면 소수점은 물론 소수점도 출력되지 않습니다. 따라서 소수 자릿수를 0으로 쉽게 지정하지 마십시오.
(3) 출력 데이터는 %-m.nf를 사용하여 왼쪽으로 정렬됩니다.
m과 n 앞에 음수 기호를 추가하면 기본적으로 %m.nf 형식과 동일한 효과가 있지만 데이터 길이가 m을 초과하지 않으면 데이터가 왼쪽으로 이동하고 오른쪽 끝에 공백이 추가됩니다.

scanf 함수

1.scanf 함수의 일반적인 형태


scanf(형식 제어, 주소 테이블 열)

"형식 제어"의 의미는 printf 함수와 동일합니다. "주소 테이블 열"은 여러 개의 주소로 구성된 테이블 열이며, 변수의 주소일 수도 있고 문자열의 첫 번째 주소일 수도 있습니다.


2.scanf 함수에서 사운드 형식 지정


printf 함수의 형식 선언과 유사하게 %로 시작하여 형식 문자로 끝나며, 중간에 추가 문자를 삽입할 수 있습니다.
scanf 함수는 다음 형식으로 다시 작성할 수 있습니다.

scanf("a=%f,b=%f,c=%f",&a,&b,&c);


형식 선언 %f 외에도 형식 문자열에는 일부 일반 문자("a=", "b=" 및 "," 포함)도 있습니다.

메모:

(1)주소 기호 및

scanf 함수의 "형식 제어" 뒤에는 변수 이름이 아닌 변수 주소가 와야 합니다.예를 들어, a와 b가 정수 변수인 경우 다음과 같이 쓰면

scaní("%f%f%f",a,b,c);

그것은 옳지 않아. "a,b,c"를 "&a,&b,&c"로 변경해야 합니다. 많은 초보자들이 이런 실수를 합니다.

(2) 그대로 입력

"형식 제어 문자열"에 형식 선언 외에 다른 문자가 있는 경우 데이터 입력 시 해당 위치에 해당 문자와 ​​동일한 문자를 입력해야 합니다.만약 있다면

scanf("a=%f,b=%f,c=%f",&a,&b,&c);

데이터 입력시 해당 위치에 동일한 문자를 입력해야 합니다.즉, 입력
a=1,b=3,c=2 (입력 내용에 주의)

따라서 공백(공백을 입력하기 위해 개행 문자를 사용하는 경우 괜찮습니다)이나 쉼표 및 기타 기호를 scanf에 추가하지 말고 필요한 입력 데이터를 직접 작성하세요.

scanf("%d%d%f",&data,&data1,&data2);
(3) 문자 입력

"%c" 형식으로 입력 문자를 선언할 때 공백 문자와 "이스케이프 문자"의 문자는 유효한 문자로 입력됩니다. 예:
 

scanf("%c%c%c,&c1,&c2,&c3);

이 기능 실행 시 공백 없이 연속된 3개의 문자를 입력해야 합니다.
두 문자 사이에 공백을 삽입하는 것은 잘못된 것입니다.

공백과 개행도 문자입니다. 입력할 때 공백이나 개행을 사용할 수 없습니다.

(4) 혼합입력

숫자 데이터를 입력할 때 공백, 캐리지 리턴, Tab 키를 입력하거나 잘못된 문자(숫자 값에 속하지 않는 문자)가 나타나면 데이터가 끝난 것으로 간주됩니다. 예를 들어:
 

scanf("%d%c%f,&a,&b,&c);

올바른 입력은 1234h7.6입니다.

첫 번째 데이터는 %d 형식에 해당합니다. 1234를 입력하면 문자 'h'가 발생하므로 시스템에서는 값 1234 뒤에 숫자가 없는 것으로 간주합니다. 첫 번째 데이터는 여기서 끝나야 하므로 변수에 1234가 전송됩니다. ㅏ. %c는 한 문자만 입력하면 되기 때문에 시스템에서는 해당 문자의 입력이 끝난 것으로 판단하므로 입력 문자 '뒤에 공백을 추가할 필요는 없다. 시간'. 문자 'h' 뒤의 값은 변수 c로 전송되어야 합니다. 1230.26을 부주의로 인해 123o.26으로 잘못 입력한 경우 123 뒤에 문자 o가 나타나므로 숫자 데이터가 여기서 끝나는 것으로 간주되어 다음 문자는 읽혀지지 않습니다.

따라서 서로 다른 유형의 데이터를 입력할 때는 유형별로 해당하는 scanf 함수를 만들어야 합니다.

(5) 다중 scanf 함수

프로그램에 scanf 함수가 2개 이상 포함되어 있는 경우 후자의 scanf 함수는 이전 scanf 함수의 입력 뒤의 개행 문자를 자신의 입력으로 간주하므로 후자의 scanf 함수가 정상적으로 입력을 얻을 수 없게 되므로 반드시 사용해야 합니다. 두 scanf 함수 사이에 getchar()를 삽입하여 추가 개행 문자를 흡수합니다.

기타 입력 및 출력 기능:

puts: printf와의 차이점
(1) 줄 바꿈을 자동으로 추가합니다.
(2).printf는 다양한 출력 패턴을 지원하며, 출력 문자열은 puts입니다.

getchar、putchar

입력 및 출력 연습:

1. 대문자 입력 후 소문자 출력

여기서는 ASCII 코드에 대한 지식을 활용합니다. 대문자에 해당하는 ASCII 코드 + 32는 소문자에 해당하는 ASCII 코드입니다.

따라서 코드 예제는 다음과 같습니다.

  1. #include<stdio.h>
  2. int main()
  3. {
  4. char a;
  5. char b;
  6. printf("请输入一个大写字母:");
  7. scanf("%c",&a);
  8. b = a+32;
  9. printf("其对应的小写字母为:%c",b);
  10. return 0;
  11. }