C编程:将长整数传递给函数并返回字符串

C编程:我需要将长整数(N)传递给函数并返回一个单词(字符串)“有效”或“无效”,但是我正在努力正确地转换值的转换。代码是否由于我需要使用指针而无法正常工作?您能请问我应该如何修改代码,为什么要修改?

#include <stdio.h>
int digitmatch(long N); // function to match the first two digits of the card
int isvalid(long N);
int main()
{
   long N;
   N =    5212888888881881;
   printf("\n digit match: %d",digitmatch(N));
   printf("\n validity: %s",isvalid(N));
}  

int digitmatch(long N)
{
    long digit;
    digit = N;
    while (digit >= 100) 
    {
        digit /= 10;
    }
   return digit;
}

char isvalid(long N)
{  
   char valid[20];

    if (digitmatch(N) == 51 || digitmatch(N) == 52) 
    {
        valid = "MasterCard";
    }
    else
    {
        valid = "invalid";
    }
   return valid;
}

非常感谢