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

Character Analysis Functions ในภาษา C (ctype.h)


Character Analysis & Conversion Functions

ฟังก์ชันใน Library <ctype.h> ใช้สำหรับ **วิเคราะห์** และ **แปลง** ตัวอักษร

Analysis Functions (ตรวจสอบลักษณะตัวอักษร)

No.FunctionDescriptionคืนค่า
1isalpha(c)เป็นตัวอักษร (A-Z, a-z)Non-zero (True) / 0 (False)
2isdigit(c)เป็นตัวเลข (0-9)Non-zero / 0
3isspace(c)เป็น Whitespace (space, \t, \n, \v, \f, \r)Non-zero / 0
4ispunct(c)เป็น Punctuation (เครื่องหมายวรรคตอน)Non-zero / 0
5islower(c)เป็นตัวพิมพ์เล็ก (a-z)Non-zero / 0
6isupper(c)เป็นตัวพิมพ์ใหญ่ (A-Z)Non-zero / 0
7isalnum(c)เป็นตัวอักษรหรือตัวเลขNon-zero / 0
8isxdigit(c)เป็น Hex Digit (0-9, A-F, a-f)Non-zero / 0
9iscntrl(c)เป็น Control CharacterNon-zero / 0
10isprint(c)เป็น Printable Character (รวม Space)Non-zero / 0
11isgraph(c)เป็น Printable แต่ไม่รวม SpaceNon-zero / 0

Conversion Functions (แปลงตัวอักษร)

FunctionDescription
tolower(c)แปลงตัวพิมพ์ใหญ่ → พิมพ์เล็ก
toupper(c)แปลงตัวพิมพ์เล็ก → พิมพ์ใหญ่

ตัวอย่างโปรแกรม: วิเคราะห์ตัวอักษร

#include <stdio.h>
#include <ctype.h>

int main() {
    char ch;
    printf("Enter a character: ");
    scanf("%c", &ch);
    
    printf("\n--- Analysis ---\n");
    printf("isalpha: %d\n", isalpha(ch));
    printf("isdigit: %d\n", isdigit(ch));
    printf("isspace: %d\n", isspace(ch));
    printf("ispunct: %d\n", ispunct(ch));
    printf("islower: %d\n", islower(ch));
    printf("isupper: %d\n", isupper(ch));
    printf("isalnum: %d\n", isalnum(ch));
    
    printf("\n--- Conversion ---\n");
    printf("tolower: %c\n", tolower(ch));
    printf("toupper: %c\n", toupper(ch));
    
    return 0;
}

ผลลัพธ์ตัวอย่าง (Input: 'A'):


--- Analysis ---
isalpha: 1
isdigit: 0
isspace: 0
ispunct: 0
islower: 0
isupper: 1
isalnum: 1

--- Conversion ---
tolower: a
toupper: A

ตัวอย่างโปรแกรม: นับประเภทตัวอักษรใน String

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

int main() {
    char str[100];
    int alpha=0, digit=0, space=0, punct=0, other=0;
    
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';
    
    for (int i = 0; str[i]; i++) {
        unsigned char c = str[i]; // Cast ป้องกัน UB กับ ctype.h
        if (isalpha(c)) alpha++;
        else if (isdigit(c)) digit++;
        else if (isspace(c)) space++;
        else if (ispunct(c)) punct++;
        else other++;
    }
    
    printf("Alpha: %d, Digit: %d, Space: %d, Punct: %d, Other: %d\n",
           alpha, digit, space, punct, other);
    return 0;
}

⚠️ ข้อควรระวังสำคัญ

ต้อง Cast เป็น unsigned char ก่อนส่งให้ ctype.h functions
isalpha((unsigned char)c) - มิฉะนั้นอาจเกิด Undefined Behavior กับค่าลบ (Signed Char)