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

แปลงตัวพิมพ์ใหญ่เป็นเล็กใน C โดยไม่ใช้ String Function

วิธีที่ 1: ใช้ strlwr() (Library Function)

strlwr() ใน <string.h> แปลงสตริงทั้งหมดเป็นตัวพิมพ์เล็ก

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

int main() {
    char str[50];
    printf("Enter string: ");
    gets(str);
    printf("Lowercase: %s\n", strlwr(str));
    return 0;
}

วิธีที่ 2: ไม่ใช้ Library - ใช้ ASCII Code

หลักการ: ตัวพิมพ์ใหญ่ 'A'-'Z' มี ASCII 65-90, ตัวพิมพ์เล็ก 'a'-'z' มี ASCII 97-122
ความต่าง = 32 → บวก 32 เข้าไป = ได้ตัวพิมพ์เล็ก

#include <stdio.h>

int main() {
    char str[100];
    int i;
    
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';  // ลบ newline
    
    for(i = 0; str[i] != '\0'; i++) {
        if(str[i] >= 'A' && str[i] <= 'Z') {
            str[i] = str[i] + 32;  // หรือ str[i] |= 32 (bitwise)
        }
    }
    
    printf("Lowercase: %s\n", str);
    return 0;
}

ผลลัพธ์

Enter string: TUTORIALSPOINT
Lowercase: tutorialspoint

ขยายความ: แปลงแบบสองทาง (Upper ↔ Lower)

#include <stdio.h>
#include <ctype.h>  // สำหรับ toupper, tolower (standard)

int main() {
    char str[100];
    int i, choice;
    
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';
    
    printf("1. To Lower\n2. To Upper\n3. Toggle Case\nChoice: ");
    scanf("%d", &choice);
    
    for(i = 0; str[i]; i++) {
        switch(choice) {
            case 1: str[i] = tolower(str[i]); break;
            case 2: str[i] = toupper(str[i]); break;
            case 3: 
                if(islower(str[i])) str[i] = toupper(str[i]);
                else if(isupper(str[i])) str[i] = tolower(str[i]);
                break;
        }
    }
    
    printf("Result: %s\n", str);
    return 0;
}

ตาราง ASCII อ้างอิง

CharacterASCII DecASCII HexBinary
'A'650x410100 0001
'a'970x610110 0001
'Z'900x5A0101 1010
'z'1220x7A0111 1010

สังเกต: บิตที่ 6 (นับจาก 0) แตกต่างกัน - ใช้ XOR 32 (0x20) สลับได้

แนวทางแนะนำ

  • ใช้ tolower()/toupper() จาก <ctype.h> - เป็น Standard, รองรับ Locale
  • เขียนเองด้วย ASCII ได้เฉพาะ ASCII Character Set
  • หลีกเลี่ยง strlwr(), strupr() - Non-standard