【发布时间】:2020-05-23 13:17:51
【问题描述】:
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;
}
非常感谢
【问题讨论】:
-
char isvalid(long N)返回char,而不是字符串。 -
信用卡号应该存储为字符串,而不是整数。
-
编译时,始终启用警告,然后修复这些警告。 (对于
gcc,至少使用:-Wall -Wextra -Wconversion -pedantic -std=gnu11)注意:其他编译器使用不同的选项来产生相同的结果。通过编译器运行发布的代码会产生 4 条警告消息和 3 条错误消息 -
根本问题,首先是代码无法编译。改正后,我们可以讨论代码逻辑是否正确。
标签: c type-conversion