Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Kiểm tra chuỗi có chứa ký tự đặc biệt trong C

Cho chuỗi str[]. Kiểm tra có ký tự đặc biệt không (không phải chữ/số). Có → "Chuỗi không được chấp nhận", không → "Chuỗi được chấp nhận".

Ký tự đặc biệt

! @ # $ % ^ & * ( ) + = - ] [ ' ; / . , { } | : " < > ? ` ~

Ví dụ

Đầu vào - "tutorials-point" → Không được chấp nhận (có '-')

Đầu vào - "tutorialspoint" → Được chấp nhận

Phương pháp

  • Duyệt từng ký tự chuỗi
  • Kiểm tra xem ký tự có trong danh sách đặc biệt không
  • Nếu có → in thông báo, đặt flag=1, break
  • Sau vòng lặp, nếu flag=0 → in được chấp nhận

Chương trình mẫu

#include <stdio.h>
#include <string.h>

void checkSpecialChar(char str[], int n) {
    int flag = 0;
    for (int i = 0; i < n; i++) {
        char c = str[i];
        if (c=='!'||c=='@'||c=='#'||c=='$'||c=='%'||c=='^'||c=='&'||c=='*'||
            c=='('||c==')'||c=='-'||c=='{'||c=='}'||c=='['||c==']'||c==':'||
            c==';'||c=='"'||c=='\''||c=='<'||c=='>'||c=='.'||c=='/'||c=='?'||
            c=='~'||c=='`') {
            printf("Chuỗi không được chấp nhận\n");
            flag = 1;
            break;
        }
    }
    if (flag == 0)
        printf("Chuỗi được chấp nhận\n");
}

int main() {
    char str[] = "Tutorials-point";
    int n = strlen(str);
    checkSpecialChar(str, n);
    return 0;
}

Kết quả

Chuỗi không được chấp nhận

Lưu ý: Trong Java/C# có thể dùng Regex ngắn gọn hơn: str.matches(".*[^a-zA-Z0-9].*")