C Program To Read Infinite Number Then Arrange Ascending Order Using Pointer

#include<stdio.h>
#include<stdlib.h>
int main()
{
 int *p,*q,i=1,j,k,temp;  //q for storing address of 1st number
 printf("Enter infinite Numbers(-1 to stop reading) :: \n");
 printf("\nEnter %d Number :: ",i);
 p=(int*)malloc(sizeof(int));
 scanf("%d",&p[0]);
 while(p[i-1]!=-1) //read until -1 is entered
 {
  i++;
  p=(int*)realloc(p,sizeof(int)*i);
  q=p;
  printf("\nEnter %d Number :: ",i);
  scanf("%d",&p[i-1]);
 }
 p=q;
 //sorting numbers using bubble sort
 for(j=1;j<i;++j)
 {
  for(k=0;k<i-j-1;++k)
  {
   if(p[k]>p[k+1])
   {
    temp=p[k];
    p[k]=p[k+1];
    p[k+1]=temp;
   }
  }
 }
 printf("\n");
 printf("\nAfter Sorting, Numbers are :: ");
 for(j=0;j<i-1;++j)
 {
  printf(" %d",p[j]);
 }
 printf("\n");
 return 0;
}

Output:

Enter infinite Numbers(-1 to stop reading) ::
Enter 1 Number :: 3
Enter 2 Number :: 1
Enter 3 Number :: 5
Enter 4 Number :: 2
Enter 5 Number :: 4
Enter 6 Number :: 7
Enter 7 Number :: 6
Enter 8 Number :: 9
Enter 9 Number :: 8
Enter 10 Number :: 0
Enter 11 Number :: -1
After Sorting, Numbers are ::  0 1 2 3 4 5 6 7 8 9
Sharing Is Caring