C语言菜鸟求解答,这个程序哪里出有关问题了

C语言初学者求解答,这个程序哪里出问题了?
在Dev C++中没有办法实现功能
//实现所输入字符串str的逆向保存,并输出
#include <stdio.h>
void rev_stringn(char str[])
{
int i, length;

while (str[i++]) //length用来保存字符串的长度
length++;

for (i = 0; i < (length / 2); i++) {
char tmp = str[i];
str [i] = str [length - i];
str [length -i] = tmp;
}
}

int main()
{
int i;
char str[100];

printf("请输入字符串:");
scanf("%s", str);

rev_stringn(str);

for (i = 0; str[i]; i++)
putchar(str[i]);
putchar('\n');

return 0;
}

------解决思路----------------------
 int i, length;
 
    while (str[i++])        //length用来保存字符串的长度
        length++;

首先,i和length未经赋值