getchar()成一维数组困难

时间:2015-08-21 08:49:29

标签: c arrays

我正在尝试开发一个(简单的)个人项目,该项目使用经典的“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()?

1 个答案:

答案 0 :(得分:1)

当用户按Enter键验证第一个字符时,我猜getchar()读取\n字符(回车符)。你没有看到它,但这里有一个字符,它使getchar()再次阅读并i再次迭代。

尝试使用printf打印c,使用如下整数:

  printf("\n Character entered: %d\n", c);

它将打印字符的ascii值。然后你可以参考man ascii检查这里的字符是什么,即使它是一个没有显示的字符。

我测试了你的代码,问题似乎就是这样。现在你必须找到绕过或忽略它的方法,玩得开心:)