Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรมตรวจสอบว่าสตริงมีอักขระพิเศษหรือไม่ในภาษา C

ได้รับสตริง str[] งานคือตรวจสอบว่าสตริงมีอักขระพิเศษหรือไม่ และถ้าสตริงมีอักขระพิเศษให้พิมพ์ "สตริงไม่被接受" ไม่งั้นพิมพ์ "สตริง被接受"

อักขระพิเศษคืออักขระที่ไม่ใช่ตัวเลขและไม่ใช่ตัวอักษร เช่น — !@#$%^&*()+=-\][‘;/.,{}|:”<>?`~

ในภาษา C เราจะใช้วิธี if-else เพื่อแก้ปัญหานี้

ตัวอย่าง

อินพุต — str[] = {"tutorials-point"}

เอาต์พุต — สตริงไม่被接受

อินพุต — str[] = {"tutorialspoint"}

เอาต์พุต — สตริง被接受

วิธีการแก้ปัญหา

  • วนทั้งสตริง
  • ค้นหาอักขระพิเศษ ถ้ามีอักขระพิเศษในสตริง ให้พิมพ์ "สตริงไม่被接受 และ break" ไม่งั้นพิมพ์ "สตริง被接受"

วิธีอื่น

หากเขียนโค้ดใน Java หรือภาษาอื่นที่รองรับนิพจน์ปกติ (regular expressions) แทนที่จะใช้วิธี if-else เราจะใช้นิพจน์ปกติตรวจสอบว่ามีในสตริงที่กำหนดหรือไม่ วิธีนี้ไม่เพียงแต่ง่ายกว่าก็ยังรวดเร็วยิ่งขึ้น

อัลกอริทึม

Start
In function int special_character(char str[], int n)
    Step 1: กำหนด i และ flag และตั้ง flag = 0
    Step 2: Loop For i = 0 และ i < n และ ++i
        ถ้า str[i] เป็นอักขระพิเศษ (!@#$%^&*()-{}[]:;\"'<>./?~`) แล้ว
            Print "สตริงไม่被接受"
            กำหนด flag = 1
            break
    Step 3: ถ้า flag == 0 แล้ว Print "สตริง被接受"
In function int main()
    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("สตริงไม่被接受\n");
            flag = 1;
            break;
        }
    }
    // ถ้าไม่มีอักขระพิเศษ
    if (flag == 0) {
        printf("สตริง被接受\n");
    }
    return 0;
}

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

ผลลัพธ์

หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ —

สตริงไม่被接受