아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
지적인웜뱃3
지적인웜뱃320.11.01

[질문] if문으로 한글과 공백 구분하는 법

#define _CRT_SECURE_NO_WARNINGS
#include &ltstdio.h>
#include &ltstring.h>
#include &ltWindows.h>


int main()
{
int temp, temp2;
char str[50] = { 0 };
int len = 0;
int vel = 0;

printf("출력할 텍스트를 입력해주세요 : ");
gets_s(str, sizeof(str)); //공백 문자를 포함한 문장 전체를 저장

printf("속도를 설정해주세요(정수값만 사용) : ");
scanf("%d", &vel);

len = strlen(str); //변수len의 값을 str문자열의 길이에 값으로 치환한다.

while (1)
{
system("cls"); //콘솔창에 있는 코드를 지우는 함수이다.

printf("%s", str);

printf("\n\n현재속도 : %d초", vel);
printf("\n종료 : Ctrl + C");

if () //영어
{
char temp = str[0]; //문자열의 첫단어를 temp변수에 저장한다.

for (int i = 1; i < len; i++) //두번째 문자부터 마지막 문자까지 반복한다.
{
str[i - 1] = str[i]; //문자열의 모든 문자를 한칸씩 이동한다.
}
str[len - 1] = temp; //보관했던 문자를 맨뒤에 나열한다.
}
else //한글
{
char temp = str[0]; //한글은 2바이트이기 때문에 2바이트인 한글자를 저장한다.
char temp2 = str[1];

for (int i = 2; i < len - 1; i++) //두번째 문자부터 마지막 문자까지 반복한다.
{
str[i - 2] = str[i]; //문자열의 모든 문자를 한칸씩 이동한다.
str[i - 1] = str[i + 1];
}
str[len - 2] = temp; //보관했던 문자를 맨뒤에 나열한다.
str[len - 1] = temp2;
}

Sleep(vel * 1000); //프로그램을 잠시 멈추는 함수이다.(1000초는 1초를 의미한다.)
}

return 0;
}

if문으로 한글과 공백을 구분할 수 있을까요? 저는 누구누구 입니다 를 입력하면 저는 까지 잘나오는데 공백을 구분못해서 문자가 깨집니다... 어떻게 해결해야하나요..?


55글자 더 채워주세요.
답변의 개수
2개의 답변이 있어요!
  • // c 는 판단할 글자를 담고 있는 변수입니다

    if ((c & 0x80) != 0) { // 한글인지 아닌지를 판단하는 조건식

    // 이 조건을 만족한다면 한글입니다

    }

    참고로 한글은 1byte 기준으로 2진수 표현시에 1000 0000 부터 시작합니다

    그래서 위와 같은 비교문이 나오는것이구요

    즉,상위 8번째 비트가 0 이면 한글이 아님

    1이면 한글임


  • 안녕하세요~! 아하(Aha) 지식답변자 다라닝입니다.

    질문하신 내용에 대하여 아래와 같이 답변 드립니다.

    한글과 공백을 비교하면 더 많은 로직이 추가되어야하니 루프돌면서 공백만 조건문 체크하시길 권해드립니다.

    indexOf 체크하셔도 되고 그냥 공백으로 비교하셔도 좋습니다!

    부족하지만 도움이 되셨기를 바라며 추가적인 문의가 필요하시면 답변 부탁드려요!