找最长字节,为啥不行呢

#include<stdio.h>
#include<string.h>
int main()
{void longest(char string1[],char string2[],char string3[]);
char s1[100],s2[100],s3[100];
printf("输入字符串:\n");
scanf("%s",s1);
longest(s1,s2,s3);
printf("后为:%s\n",s2);
return 0;}
void longest(char string1[],char string2[],char string3[])
{int i,max,h,m=0,j=0,k,sum=0,v=0,n=0;
for(i=0;string1[i]!='\0';i++)
{if(string1[i]==' ')
{h=i-m;
m=i+1;
string3[j++]=h;
string3[j]='\0';}}
max=string3[0];
for(j=1;string3[j]!='\0';j++)
{if(max<string3[j])
max=string3[j];
v=j;}
for(k=0;k<v;k++)
{sum=sum+string3[k];}
for(i=sum;i<=(sum+max);i++)
{string2[n++]=string1[i];
string2[n]='\0';}}

没看懂你想干什么,longest第一个for循环就给我看懵了,string3[j++] = h;这是在往char数组存int?还有下一步string3[j] = '\0';就设置为\0了,你第二个循环刚跑一遍就遇到\0停住了