C로 사용자 입력 얻기

Jinku Hu 2023년10월12일
  1. scanf 함수를 사용하여 C에서 주어진 형식에 따라 사용자 입력을 가져옵니다
  2. 주어진 형식에 따라 scanf구문 분석 사용자 입력 사용
C로 사용자 입력 얻기

이 기사는 C에서 사용자 입력을 얻는 방법에 대한 여러 방법을 보여줍니다.

scanf 함수를 사용하여 C에서 주어진 형식에 따라 사용자 입력을 가져옵니다

scanf 함수는 사용자 입력을 형식화 된 텍스트로 처리하고 변환 된 문자열 값을 주어진 포인터에 저장합니다. 함수 프로토 타입은printf 함수 계열과 유사합니다. 입력 문자를 처리하는 방법에 대한 지시문으로 형식 문자열 인수를 취한 다음 해당 값을 저장하기 위해 가변 개수의 포인터 인수를 사용합니다.

% [^\n]지정자는scanf가 첫 줄 바꿈 문자 앞의 모든 문자를 하나의 문자열로 처리하고char *버퍼에 저장하도록 지시합니다. 대상 버퍼는 사용자 입력 문자열에 대해 충분히 커야합니다. 또한 선택적 문자 m을 문자열 변환 지정자에 사용할 수 있으며 함수가 입력 문자열을 저장할 충분한 버퍼 크기를 할당하도록 강제합니다. 따라서 사용자는 주어진 포인터가 더 이상 필요하지 않은 후에 free함수를 호출해야합니다.

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

int main(void) {
  char str1[1000];

  printf("Input the text: ");
  scanf("%[^\n]", str1);  // takes everything before '\n'

  printf("'%s'\n", str1);
  exit(EXIT_SUCCESS);
}

출력:

Input the text: temp string to be processed
'temp string to be processed'

또는 scanf를 사용하여 형식 문자열 지정자를 수정하여 주어진 문자 이전의 모든 텍스트 입력을 처리 할 수 ​​있습니다. 다음 예는 값 9의 첫 번째 문자를 찾을 때까지 사용자 입력을 스캔하는 scanf호출을 보여줍니다.

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

int main(void) {
  char str1[1000];

  printf("Input the text: ");
  scanf(" %[^9]*", str1);  // takes everything before '9' in string

  printf("'%s'\n", str1);
  exit(EXIT_SUCCESS);
}

출력:

Input the text: temporary string 32j2 923mlk
'temporary string 32j2 '

주어진 형식에 따라 scanf구문 분석 사용자 입력 사용

scanf함수의 또 다른 유용한 기능은 주어진 형식에 따라 사용자 입력을 구문 분석하는 것입니다. *문자는 변환 지정자를 따라 일치하는 문자를 버리기 위해 형식 문자열에 사용됩니다. 다음 코드 샘플은scanf가 필수:기호로 구성된 텍스트 입력을 구문 분석하고 지정된 기호 뒤의 문자 만 줄 끝에 저장하는 경우를 보여줍니다. 이 옵션은 특정 문자가 구분 기호 위치에있는 고정 형식 텍스트를 스캔하는 데 유용 할 수 있습니다.

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

int main(void) {
  char str1[1000];

  printf("Input the text: ");
  scanf("%*[^:]%*c%[^\n]", str1);

  printf("'%s'\n", str1);
  exit(EXIT_SUCCESS);
}

출력:

Input the text: temporary value of var3: 324 gel
' 324 gel'
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C IO