C에서 공백이 있는 scanf 문자열

Waqar Aslam 2023년10월12일
  1. scanf에서 RegEx를 사용하여 C에서 공백으로 사용자 입력 받기
  2. scanf에서 %[^\n]s를 사용하여 C에서 공백으로 사용자 입력 가져오기
  3. C에서 공백으로 사용자 입력을 받으려면 scanf에서 %[^\n]%*c를 사용하십시오.
  4. C에서 공백으로 사용자 입력을 받으려면 scanf에서 gets()를 사용하십시오.
C에서 공백이 있는 scanf 문자열

이 기사에서는 C 프로그래밍 언어의 파일 디스크립터에 대해 설명합니다.

사용자로부터 입력을 수집할 때 scanf()는 대부분의 경우 공백, 백슬래시, 탭 등과 같은 것을 무시합니다. 그러나 scanset 지정자를 사용하면 이 제한을 피할 수 있습니다. scanset 지정자는 %[] 표기법으로 표시됩니다.

이 대괄호로 표현하면 달성하려는 작업에 따라 문자 또는 문자열을 작성할 수 있습니다.

C 프로그래밍 언어는 포함된 공백을 유지하면서 사용자로부터 입력을 받는 데 사용할 수 있는 여러 가지 방법을 제공합니다. 이를 구현하는 몇 가지 예를 살펴보겠습니다.

scanf에서 RegEx를 사용하여 C에서 공백으로 사용자 입력 받기

%[]는 스캔 세트 지정자이며 0-9, a-z, 공백A-Z를 사용하면 해당 문자만 입력으로 사용할 수 있음을 나타냅니다. 다른 것은 사용할 수 없습니다.

s는 컴퓨터가 문자열을 입력으로 수락함을 나타냅니다.

소스 코드:

#include <stdio.h>

int main(int argc, char const *argv[]) {
  char name[20];

  printf("Please enter your full name: ");
  scanf("%[0-9a-zA-Z ]s", name);
  printf("\nYour name is: %s", name);

  return 0;
}

출력:

Please enter your full name: Saad Aslam

Your name is: Saad Aslam

scanf에서 %[^\n]s를 사용하여 C에서 공백으로 사용자 입력 가져오기

이 인스턴스의 scanset 문자는 [].입니다. ^\n 문자는 새 줄을 찾을 때까지 사용자 입력을 계속 읽도록 운영 체제에 지시합니다.

이 경우 두 문자가 동일하지 않으면 true를 반환하는 XOR 연산자를 활용했습니다. 문자가 새 줄 \n으로 결정된 후 XOR 연산자 ^는 문자열을 읽을 때 false를 반환합니다.

따라서 %s가 아닌 %[n]s로 작성합니다. 따라서 공백이 포함된 입력 줄을 얻으려면 다음을 사용할 수 있습니다.

scanf("%[n]s", str);

소스 코드:

#include <stdio.h>

int main() {
  char str[100];

  printf("Please enter your full name: ");
  scanf("%[^\n]s", str);
  printf("\nYour name is: %s", str);

  return 0;
}

출력:

Please enter your full name: Saad Aslam

Your name is: Saad Aslam

C에서 공백으로 사용자 입력을 받으려면 scanf에서 %[^\n]%*c를 사용하십시오.

이 경우 scanset 문자는 []입니다. ^\n 문자는 운영 체제가 새 줄을 찾을 때까지 입력을 계속 받도록 지시합니다.

그런 다음 %*c를 사용하여 줄 바꿈 문자를 읽고 여기서 사용된 *는 이 줄 바꿈 문자가 출력에서 제외되었음을 나타냅니다.

소스 코드:

#include <stdio.h>

int main() {
  char str[20];

  printf("Please enter something: ");
  scanf("%[^\n]%*c", str);
  printf("\nYou entered: %s", str);

  return 0;
}

출력:

Please enter something: Writer at Delft Stack

You entered: Writer at Delft Stack

C에서 공백으로 사용자 입력을 받으려면 scanf에서 gets()를 사용하십시오.

C 라이브러리에 포함된 char *gets(char *str) 함수는 표준 입력(stdin)에서 한 줄을 읽고 str이 참조하는 문자열에 저장합니다. 상황에 따라 개행 문자를 읽거나 파일의 끝에 도달할 때(둘 중 먼저 발생하는 경우) 중지됩니다.

소스 코드:

#include <stdio.h>

int main() {
  char str[50];

  printf("Please enter your name: ");
  gets(str);

  printf("\nYour name is: %s", str);

  return (0);
}

출력:

Please enter your name: Saad Aslam

Your name is: Saad Aslam
작가: Waqar Aslam
Waqar Aslam avatar Waqar Aslam avatar

I am Waqar having 5+ years of software engineering experience. I have been in the industry as a javascript web and mobile developer for 3 years working with multiple frameworks such as nodejs, react js, react native, Ionic, and angular js. After which I Switched to flutter mobile development. I have 2 years of experience building android and ios apps with flutter. For the backend, I have experience with rest APIs, Aws, and firebase. I have also written articles related to problem-solving and best practices in C, C++, Javascript, C#, and power shell.

LinkedIn

관련 문장 - C String