[질문] if문으로 한글과 공백 구분하는 법
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <Windows.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문으로 한글과 공백을 구분할 수 있을까요? 저는 누구누구 입니다 를 입력하면 저는 까지 잘나오는데 공백을 구분못해서 문자가 깨집니다... 어떻게 해결해야하나요..?
// c 는 판단할 글자를 담고 있는 변수입니다
if ((c & 0x80) != 0) { // 한글인지 아닌지를 판단하는 조건식
// 이 조건을 만족한다면 한글입니다
}
참고로 한글은 1byte 기준으로 2진수 표현시에 1000 0000 부터 시작합니다
그래서 위와 같은 비교문이 나오는것이구요
즉,상위 8번째 비트가 0 이면 한글이 아님
1이면 한글임
안녕하세요~! 아하(Aha) 지식답변자 다라닝입니다.
질문하신 내용에 대하여 아래와 같이 답변 드립니다.
한글과 공백을 비교하면 더 많은 로직이 추가되어야하니 루프돌면서 공백만 조건문 체크하시길 권해드립니다.indexOf 체크하셔도 되고 그냥 공백으로 비교하셔도 좋습니다!
부족하지만 도움이 되셨기를 바라며 추가적인 문의가 필요하시면 답변 부탁드려요!