簡體   English   中英

在C中打印反向的字符串/數組

[英]Printing a reversed string/array in C

我正在嘗試打印反向的字符串/數組。 我使用了以下代碼,它似乎能夠按照第一個數組string的正確順序提供第二個數組revString值。 我還可以在兩個數組中打印單個字符,並且可以打印第一個數組的整個字符串。 但是revString數組根本不打印。 我想知道我是否在這里遺漏了一個要點。

void reverseString(char string[]) {
    int i = strlen(string);
    int i_2 = 0;
    revString arrayet
    char revString[i + 1];
    char *character; 

    while (i > -1) {
        character = &string[i];
        revString[i_2] = *character;
        printf("%c", revString[i_2]);
        i = i - 1;
        i_2 = i_2 + 1;
    }
    revString[i_2] = '\0';
    printf("%d\n", i_2);
    printf("%s", revString);
}

代碼現在給出以下輸出,並帶有示例字符串"Hello World"

dlrow olleH13

如您所見,最終的printf語句不執行任何操作

在C語言中,索引基於0。 因此,如果您輸入長度為10的字符串,則最后一個字符將位於索引9處。

在您的代碼中,當您為revString分配字符時,您的代碼正在嘗試訪問string [len]。

您的代碼應如下所示。

int i = strlen(string) - 1;

您的代碼反轉了字符串string其中string[i]處包含空終止string[i] 結果數組以空終止符開頭,因此printf輸出任何內容。

這是修改后的版本:

void reverseString(char string[]) {
    int i = strlen(string);
    int i_2 = 0;
    char revString[i + 1];
    char character;

    while (i > 0) {
        i = i - 1;
        character = string[i];
        revString[i_2] = character;
        //printf("%c", revString[i_2]);
        i_2 = i_2 + 1;
    }
    revString[i_2] = '\0';
    printf("%d\n", i_2);
    printf("%s", revString);
}

輸出:

11
dlrow olleH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM