Indian currency format using C
Allocation woes. char *tmpCurrency needs enough memory for a null character terminated string.  This implies a +1 to the length + commas addition.  The cast of malloc() is not needed.  Multiplying by the size of a pointer sizeof(char*) is wrong.  It should be by the size of an element of tmpCurrency, which is a char.  length,commas should be size_t rather than int, but that make s little difference  with small strings.

// tmpCurrency = (char*) malloc((length + commas) * (sizeof(char*)));
tmpCurrency = malloc(sizeof *tmpCurrency * (length + commas + 1));

Separate out functional code from the test driver.  I'd expect some stand-alone function Devious_ICF(char *dest, const char *src) and then code in main() testing it.
Questionable space size and incorrect use of gets_s(char *s, rsize_t n).  Avoid coding naked magic numbers like 20 

// char        currency[20];
// gets_s(currency);

#define CURRENCY_SIZE 20
...
char currency[CURRENCY_SIZE];
gets_s(currency, sizeof currency);

stdout is not certainly output as a prompt before asking for input.  To maintain portability, flush.

puts("Enter the Currency");
fflush(stdout);  // add
gets_s(...);

Curious use of static.  static not needed here.

// static int  i = 0, cnt = 0;
int  i = 0, cnt = 0;

Accessing code outside array bounds.

// memmove(currency, currency + n, strlen(currency));
memmove(currency, currency + n, strlen(currency) - n);
currency[n] = '\0';

Use of ?: does not certainly use a consistent type as the types of currency[0]='-' and NULL may differ.  An if() would be better anyways.

// signCount==1?currency[0]='-':NULL;
if (signCount==1) {
  currency[0] = '-';
}

Format to presentation width.  Use an auto formatter.  Weak formatting employed significantly detracts from code's presentation.

          if (length % 2 == 0)                            //When length is even comma comes after 1 digit eg 1,23,456. so what i have done adjusting length ann checking when it is becoming even and putting comma.



versus

          // When length is even, comma comes after 1 digit e.g. 1,23,456. 
          //   so what i have done adjusting length and checking when it is 
          //   becoming even and putting comma.
          if (length % 2 == 0) 



Incorrect use of errno_t strcpy_s(char * restrict s1, rsize_t s1max, const char * restrict s2);.  Missing parameter.

strcpy_s(currency, tmpCurrency);`

Missing #include headers.
Overall - approach used is excessively complex.


Given above issues that a compiler should have reported, it implies compilation is not done with warning fully enabled or code is using non-standard C.  Recommend fully enabling all warnings.