C로 사용자 입력 얻기
![C로 사용자 입력 얻기](/img/C/feature-image---get-user-input-c.webp)
이 기사는 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'
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