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

เขียนโปรแกรม C กลับสตริง (Reverse String) โดยไม่ใช้ Library Function

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

strrev() อยู่ใน <string.h> กลับสตริงเก็บไว้ที่ตัวแปรเดิม

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

int main() {
    char str[50];
    printf("Enter string: ");
    gets(str);          // ไม่แนะนำให้ใช้ (unsafe)
    strrev(str);
    printf("Reversed: %s\n", str);
    return 0;
}

วิธีที่ 2: ไม่ใช้ strrev() - สลับตำแหน่ง (Swap)

หลักการ: สลับตัวแรก<->ตัวสุดท้าย ตัวที่ 2<->ตัวสุดท้าย-1 ... จนถึงกึ่งกลาง

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

int main() {
    char str[100];
    int i, len;
    char temp;
    
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);
    
    // ลบ newline ถ้ามี
    len = strlen(str);
    if(str[len-1] == '\n') str[--len] = '\0';
    
    // สลับตัวอักษร
    for(i = 0; i < len/2; i++) {
        temp = str[i];
        str[i] = str[len - 1 - i];
        str[len - 1 - i] = temp;
    }
    
    printf("Reversed: %s\n", str);
    return 0;
}

ผลลัพธ์

Enter string: Tutorialspoint
Reversed: tniopslairotuT

วิธีที่ 3: ใช้ Pointer (Advanced)

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

void reverse(char *str) {
    char *start = str;
    char *end = str + strlen(str) - 1;
    char temp;
    
    while(start < end) {
        temp = *start;
        *start = *end;
        *end = temp;
        start++;
        end--;
    }
}

int main() {
    char str[100];
    printf("Enter string: ");
    fgets(str, sizeof(str), stdin);
    str[strcspn(str, "\n")] = '\0';  // ลบ newline
    
    reverse(str);
    printf("Reversed: %s\n", str);
    return 0;
}

สรุปการเปรียบเทียบ

วิธีความยากความเร็วหมายเหตุ
strrev()ง่ายที่สุดเร็วNon-standard (Microsoft only)
Swap Loopง่ายเร็วStandard C, เข้าใจหลักการ
Pointerปานกลางเร็วIdiomatic C, ใช้ในระบบจริง
หมายเหตุ: strrev() ไม่อยู่ใน ANSI C Standard ใช้ได้เฉพาะบางคอมไพเลอร์ (Turbo C, MSVC) ควรเขียนเองเพื่อ Portability