Переполнение буфера Hello!
char *s="";
sprintf(s,"%d",curr);
length=strlen(s);
Вы выделяете один байт для строки в стеке, а затем переходите к написанию более одного байта. И в довершение всего, вы читаете за пределами этого массива. Пожалуйста, прочитайте руководство по C и особенно раздел о строках и выделите для них память.