为什么这个程序没有结果解决方法

为什么这个程序没有结果
一个将数字转化为字符串的程序,但是运行没有结果。
#include<stdio.h>
int getlen(char *s)
{
int n;
for(n = 1;*s != '\0';s++)
n++;

return n;
}
void reverse(char s[])
{
int c,i,j;
for(i = 0,j = getlen(s)-1;i < j;i++,j--)
{
c = s[i];
  s[i] = s[j];
s[j] = c;
}
}
void itoa(int n,char s[])
{
int i,sign;
if((sign = n) < 0)
{
n = -n;
}
i = 0;
do
{
s[i++] = n % 10 +'0';
}while((n/=10)>0);
if(sign < 0)
{
s[i++] = '-';
}
s[i] = '\0';
reverse(s);
}
int main()
{
int n=154;
char s[100];
itoa(n,s);
  for(int i=0;s[i]='\0';i++)
{
printf("%c",s[i]);
}
return 0;
}


------解决方案--------------------
你的这个程序有两个地方错误:(在下面程序中给你修改了)
C/C++ code

#include <stdio.h> 

int getlen(char *s) 
{ 
    int n; 
    for(n = 1;*s != '\0';s++) 
        n++; 
    
    return n; 
} 

void reverse(char s[]) 
{ 
    int c,i,j; 
    for(i = 0,j = getlen(s)-2;i  < j;i++,j--)//数组坐标从0开始的。 
    { 
        c = s[i]; 
        s[i] = s[j]; 
        s[j] = c; 
    } 
} 

void itoa(int n,char s[]) 
{ 
    int i,sign; 
    if((sign = n)  < 0) 
    { 
        n = -n; 
    } 
    i = 0; 
    do 
    { 
        s[i++] = n % 10 +'0'; 
    }while((n/=10)>0); 
    if(sign  < 0) 
    { 
        s[i++] = '-'; 
    } 
    s[i] = '\0'; 
    reverse(s); 
} 

int main() 
{ 
    int n=154; 

    char s[100]; 

    itoa(n,s); 

    for(int i=0;s[i]!='\0';i++) //s[i]='\0'改为s[i]!='\0', 这个错误不应该啊。
    { 
        printf("%c",s[i]); 
    } 
    printf("\n");
    return 0; 
}