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].*")