Определить участки постоянства и вывести их на экран - C (СИ)

Формулировка задачи:

Добрый день ! Суть задания такая , необходимо чтобы программа считывала с клавиатуры числа, после того как я ввожу -1 , цикл прерывался и она считала количество постоянств (0000,1111,2222222,33 и т.д.) и выводила их на экран. С подсчетом проблему я решил, а вот с выводом получается какая то белеберда ( Глаз уже замылился , посмотрите в чем ошибка пожалуйста.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
 
  int x,x2,k=0,j=0,i=0;
  const int u = 100;
  char str[u];
 
  printf("Vvedite chislo :");
  scanf("%d",&x);
  x2=-1;
 
for(i; x != -1; i++){
   if(x==x2){
   k++; /*считаем количество повторов если x==x2 */
   str[i]=x2; /*записываем число в строку */
   x2=x;
   printf("Vvedite chislo :");
   scanf("%d",&x);
   continue;
   }
   else{
  if(str[i-1]!='\n') /*если \n  первый раз то записываем в строку \n */
      str[i]='\n';
   else
   i--;
 
   x2=x;
   printf("Vvedite chislo :");
  scanf("%d",&x);
   }
 
   if(k>0){
   j++; /*если счетчик k>0  то плюсуем k+1 */
   k=0;/*обнуляем k*/
   }
  }
 
 if(k>0){
 j++;
 k=0;
   }
 str[i]='\0';/*записываем конец строки*/
 
 printf("\n%s",str);
 
 printf("\nUchastkov monotonnosti : %d\n",j);
 
return 0;
  }

Код к задаче: «Определить участки постоянства и вывести их на экран - C (СИ)»

textual
str[i]=x2; /*записываем число в строку */

6   голосов, оценка 3.833 из 5


СОХРАНИТЬ ССЫЛКУ