Encode message by alphabets - Follow Up
Test clarity
A sample such as with my_decode(512) deserves a break down of how, as letters, it might be encoded.
Add as a comment, or integrate in test, the expected outputs.
Posting input as well as output is useful.
printf(&quot;%u --&gt; result: %u\n&quot;, 512, my_decode(512));

Format
Other code and below hints OP is not using an auto formatter as break is not indented.  1) Recommend to use an auto-formatter 2) Prefer { }
    if (input % (i *10) / i == 0)
    break;
    // vs.
    if (input % (i *10) / i == 0) {
        break;
    }

Macro vs. code
Consider a helper function
bool alph_in_range(unsigned num) {
  return num &gt;= MIN_ALPH &amp;&amp; num &lt;= MAX_ALPH;
}

Function
my_decode(102) is 2 and my_decode(1002) is 1.  I'd expect 2 for the first is allowed, 10,2 and 1,02 then 10,02 and 1,002 allowed for the 2nd.

Not much else to say.
Minor: _MAX
...._MAX more common in C such as INT_MAX
// #define MIN_ALPH 1
// #define MAX_ALPH 26

#define ALPH_MIN 1
#define ALPH_MAX 26

Minor: unsigned vs. unsigned int
Either works.  unsigned is shorter.
As with such style issues, code to your group's coding standard.
Minor: Mixed types
Some coding standards dislike  unsigned % int.
Could use input % 100u vs. input % 100.