gpt4 book ai didi

c - getchar()转化为一维数组的难点

转载 作者:行者123 更新时间:2023-12-04 11:40:14 25 4
gpt4 key购买 nike

我正在尝试开发一个(简单的)个人项目,它使用经典的“MOD 10”规则充当信用卡验证器。

我在项目的第一部分遇到了一些困难。

目标是这样的:
从用户那里获取 16 个字符,一次一个。
每输入一个字符,将其添加到数组intInput中的相应位置。
然后稍后(未显示)调用函数 validator(),将整个数组作为参数,然后根据需要对其进行验证。

困难在于它似乎在每次迭代中“跳过”i,迭代次数为 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()?

最佳答案

我猜 getchar() 在用户按下 enter 以验证第一个字符时读取了 \n 字符(这是回车符)。你看不到它,但这里有一个字符,它使 getchar() 再次读取并 i 再次迭代。

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

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

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

我用您的代码进行了测试,问题似乎确实如此。现在你必须找到一种绕过或忽略它的方法,玩得开心:)

关于c - getchar()转化为一维数组的难点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32136140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com