Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Đảo ngược mảng chuỗi trong C

Cho mảng chuỗi. Đảo thứ tự các phần tử: phần tử cuối lên đầu, v.v.

Ví dụ

Đầu vào - {"learn", "programming", "at", "tutorialspoint"}

Đầu ra - {"tutorialspoint", "at", "programming", "learn"}

Phương pháp

  • 2 con trỏ: start=0, end=n-1
  • Hoán đổi strarr[start] và strarr[end]
  • start++, end-- cho đến khi start >= end
  • Chỉ hoán đổi con trỏ, không copy chuỗi → nhanh

Chương trình mẫu

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

void reverseStringArray(char* strarr[], int n) {
    char* temp;
    int end = n - 1;
    for (int start = 0; start < end; start++) {
        temp = strarr[start];
        strarr[start] = strarr[end];
        strarr[end] = temp;
        end--;
    }
}

int main() {
    char* strarr[] = {"learn", "programming", "at", "tutorialspoint"};
    int n = sizeof(strarr)/sizeof(strarr[0]);
    
    printf("Trước: ");
    for (int i = 0; i < n; i++) printf("%s ", strarr[i]);
    
    reverseStringArray(strarr, n);
    
    printf("\nSau: ");
    for (int i = 0; i < n; i++) printf("%s ", strarr[i]);
    return 0;
}

Kết quả

Trước: learn programming at tutorialspoint
Sau: tutorialspoint at programming learn