[英]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.