我正在尝试开发一个(简单的)个人项目,该项目使用经典的“MOD 10”规则充当信用卡验证器。
我在项目的第一部分遇到了一些困难。
目的是:
从用户那里一次取16个字符,一个一个
每次输入一个字符时,将其添加到数组intInput中的相应位置
然后稍后(未示出),调用函数validator(),将整个数组作为参数,然后根据需要进行验证。
困难在于它似乎在每次迭代中都“跳过”,在2的迭代中上升,而不是1.此外,存储在数组中的值看起来与预期的不同。
char intInput[16];
char c;
int i;
for (i = 0; i <= 15; i++)
{
printf("Please insert next char: \n");
c = getchar();
printf("\n Character entered: \n");
putchar(c);
printf("\n");
printf("Value of i is: %d \n", i); // debugging purposes
intInput[i] = c; // add character input from user, into array for later processung
printf("ADDED SOMETHING TO INTINPUT, VALUE: %c \n", intInput[i]); // debugging purposes
}
我是否错误地使用了函数getchar()和putchar()?
答案 0 :(得分:1)
当用户按Enter键验证第一个字符时,我猜getchar()
读取\n
字符(回车符)。你没有看到它,但这里有一个字符,它使getchar()
再次阅读并i
再次迭代。
尝试使用printf打印c
,使用如下整数:
printf("\n Character entered: %d\n", c);
它将打印字符的ascii值。然后你可以参考man ascii
检查这里的字符是什么,即使它是一个没有显示的字符。
我测试了你的代码,问题似乎就是这样。现在你必须找到绕过或忽略它的方法,玩得开心:)