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;
}

非常感谢

评论
Me
Me

In C, strings are of type const char* or char*, so your function should return that:

const char* isvalid(long N)
{  

    if (digitmatch(N) == 51 || digitmatch(N) == 52) 
    {
        return "MasterCard";
    }
    else
    {
        return "invalid";
    }
}
点赞
评论
bsequi
bsequi

你可以:  1.将“有效”的声明放在范围之外,并放弃返回/使函数返回成功代码  2.将返回类型设置为char *,因为您返回了一个数组(不确定数组的内容是否仍然存在,因为我们已经超出了声明它的范围)  3.将数组作为指针传递给函数,并在函数内部修改其值(返回0)

点赞
评论