C語言反轉行中字詞範例

2019-10-16 22:09:28

在C語言中,如何編寫反轉行中字詞的程式?建立一個原始檔:program_to_reverse_words_in_line.c,參考以下實現程式碼 -

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

int string_length(char s[]) {
    int i = 0;

    while (s[i] != '\0')
        i++;

    return i;
}

void string_reverse(char st[]) {
    int i, j, len;
    char ch;

    j = len = string_length(st) - 1;
    i = 0;

    while (i < j) {
        ch = st[j];
        st[j] = st[i];
        st[i] = ch;
        i++;
        j--;
    }
}

int main(void) {
    char line[] = "Maxsu is one of the five wonders of the world";
    char reverse[100] = "", temp[50];
    int i, j, n;

    n = string_length(line);

    for (i = 0; i < n; i++) {

        for (j = 0; i < n && line[i] != ' '; ++i, ++j) {
            temp[j] = line[i];
        }

        temp[j] = '\0';

        string_reverse(temp);

        strcat(reverse, temp);
        strcat(reverse, " ");
    }

    printf("Original - %s\n", line);
    printf("Reversed - %s\n", reverse);

    return 0;
}

執行上面範例程式碼,得到以下結果 -

Original - Maxsu is one of the five wonders of the world
Reversed - usxaM si eno fo eht evif srednow fo eht dlrow