please tell what is wrong in my code ? spoj : the next pallindrome ?

#include <stdio.h>
#include <string.h>

int checkallnine(char str[])
{
int i;
for(i=0;i<=strlen(str)-1;i++)
{
if(str[i]!=‘9’)
return 0;

}

return 1;

}

int pallindrome(char str[])
{
int lo,hi;
lo = 0;
hi = strlen(str)-1;

while(lo<hi)
{
	if(str[hi]!=str[lo])
		return 0;
	lo++;
	hi--;
}

return 1;

}

void modifiedpallindrome(char str[])
{
int lo,hi,x,y,i,j,mid,temp,carry,flag;
carry = 0;
lo = 0;
hi = strlen(str)-1;
mid = (lo+hi)/2;

i = ((lo+hi)%2 != 0? mid:mid-1);
j = mid+1;

if(pallindrome(str))
{
	i = mid;
	x = str[mid]-'0';
	flag = 1;
	goto daksh;
	
}

while(i>=0 && j<=hi)
{
	x = str[i]-'0';
	y = str[j]-'0';
	
	if(x>y)
	{
		str[j]=str[i];
		flag = 0;
		break;
	}
	else if(x<=y)
	{
		
		flag = 1;
		break;
	}
	i--;
	j++;
}

daksh : 
if(flag == 1)
{
	//printf("hello\n");
	temp = x + 1;
	//printf("%d",temp);
	str[i] = (temp%10) + '0';
	carry = temp/10;
	i--;
	while(carry!=0)
	{
		temp = (str[i]-'0') + carry;
		str[i] = (temp%10) + '0';
		carry = temp/10;
		i--;
		
	}
	
}


while(lo<hi)
{
	if(str[lo]!=str[hi])
	{
		str[hi] = str[lo];
	}
	
	lo++;
	hi--;
}

printf("%s\n",str);

}
int main()
{
char str[1000000];
int testcases;
int hi,i;

scanf("%d",&testcases);

while(testcases--)
{
//printf("enter stirng\n");
scanf("%s",str);
hi = strlen(str)-1;
if(checkallnine(str))
{
	str[0]='1';
	for(i=1;i<=hi;i++)
	{
		str[i]='0';
	}
	str[hi+1]='1';;
	str[hi+2]='\0';
	
	printf("%s\n",str);
}
else
{
modifiedpallindrome(str);
}
}
return 0;

}