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