Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 문자열에 특수 문자가 포함되어 있는지 확인하는 프로그램

문자열 str[]이 주어졌을 때, 해당 문자열에 특수 문자(special character)가 포함되어 있는지 확인하는 것이 과제입니다. 특수 문자가 존재하면 "The String is not accepted"(문자열이 허용되지 않음)를 출력하고, 존재하지 않으면 "The string is accepted"(문자열이 허용됨)를 출력해야 합니다.

여기서 특수 문자란 숫자도 아니고 알파벳도 아닌 문자를 의미하며, 구체적으로는 !@#$%^&*()+=-][‘;/.,{}|:"<>?`~ 와 같은 기호들을 말합니다.

C 프로그래밍 언어에서는 이 문제를 if-else 조건문 방식으로 해결할 수 있습니다.

입력 − str[] = {"tutorials-point"}

출력 − the string is not accepted (문자열이 허용되지 않음)

입력 − str[] = {"tutorialspoint"}

출력 − The string is accepted (문자열이 허용됨)

문제 해결 접근 방법

  • 문자열 전체를 처음부터 끝까지 순회(traverse)합니다.
  • 각 문자가 특수 문자인지 검사하고, 특수 문자가 발견되면 "The string is not accepted"를 출력한 뒤 반복문을 종료(break)합니다. 끝까지 발견되지 않으면 "The string is accepted"를 출력합니다.

다른 접근 방법

Java처럼 정규 표현식(regular expression)을 지원하는 언어로 작성한다면, if-else 방식 대신 정규 표현식을 사용하여 주어진 문자열에 특수 문자가 있는지 확인할 수 있습니다. 이 방법은 코드가 단순해질 뿐만 아니라 실행 속도 면에서도 더 빠르다는 장점이 있습니다.

알고리즘

Start
In function int special_character(char str[], int n)
    Step 1→ 변수 i와 flag를 선언하고 flag를 0으로 초기화
    Step 2→ Loop For i = 0 and i < n and ++i
        If(str[i] == '!' || str[i] == '@' || str[i] == '#' || str[i] == '$'
        || str[i] == '%' || str[i] == '^' || str[i] == '&' || str[i] == '*'
        || str[i] == '(' || str[i] == ')' || str[i] == '-' || str[i] == '{'
        || str[i] == '}' || str[i] == '[' || str[i] == ']' || str[i] == ':'
        || str[i] == ';' || str[i] == '"' || str[i] == '\'' || str[i] == '<'
        || str[i] == '>' || str[i] == '.' || str[i] == '/' || str[i] == '?'
        || str[i] == '~' || str[i] == '`' then
            Print "String is not allowed"
            Set flag as 1
            break
    Step 3→ If flag == 0 then,
        Print "string is accepted"
In function int main(int argc, char const *argv[])
    Step 1→ str[]를 {"Tutorials-point"}로 선언 및 초기화
    Step 2→ n을 strlen(str) 값으로 설정
    Step 3→ special_character(str, n) 호출
Stop

예제 코드

#include <stdio.h>
#include <string.h>
int special_character(char str[], int n){
    int i, flag = 0;
    for (i = 0; i < n; ++i){
        //문자열의 각 문자가 특수 문자인지 하나씩 검사합니다.
        if(str[i] == '!' || str[i] == '@' || str[i] == '#' || str[i] == '$'
        || str[i] == '%' || str[i] == '^' || str[i] == '&' || str[i] == '*'
        || str[i] == '(' || str[i] == ')' || str[i] == '-' || str[i] == '{'
        || str[i] == '}' || str[i] == '[' || str[i] == ']' || str[i] == ':'
        || str[i] == ';' || str[i] == '"' || str[i] == '\'' || str[i] == '<'
        || str[i] == '>' || str[i] == '.' || str[i] == '/' || str[i] == '?'
        || str[i] == '~' || str[i] == '`' ){
            printf("String is not allowed\n");
            flag = 1;
            break;
        }
    }
    //특수 문자가 하나도 없는 경우
    if (flag == 0){
        printf("string is accepted\n");
    }
    return 0;
}
int main(int argc, char const *argv[]){
    char str[] = {"Tutorials-point"};
    int n = strlen(str);
    special_character(str, n);
    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다 −

String is not allowed