[英]Why does this C reverse string function not work?
我很困惑為什么當我反轉打印時得到一個空字符串。 在每次迭代中打印出字符似乎工作正常。
Output:
original string: testing
g
n
i
t
s
e
t
reversed:
#include <stdio.h>
#include <string.h>
void reverse_string(char string[]) {
int str_len = strlen(string);
char reversed[20];
int j = 0;
for (int i = strlen(string); i>= 0; i--) {
char tmp = string[i];
reversed[j] = tmp;
printf("%c\n", reversed[j]);
j++;
}
reversed[j] = '\0';
printf("reversed: %s", reversed);
}
int main (void) {
char string[8] = "testing";
printf("original string: %s", string);
reverse_string(string);
return 0;
}
i
從strlen(string)
開始,它指向終止'\0'
字符。 該字符被復制到reversed
字符串中的 position 0 中,因此之后的任何字符都不被視為字符串的一部分。
for (int i = strlen(string); i>= 0; i--) {
char tmp = string[i];
string[strlen(string)]
根據定義總是字符串終止字符'\0'
。 您必須從strlen(string)-1
開始循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.