gpt4 book ai didi

c - 在按下 CTRL+D 之前如何从键盘读取数字?

转载 作者:行者123 更新时间:2023-11-30 21:05:09 25 4
gpt4 key购买 nike

正如标题所示,我需要读取数字,直到按下 CTRL+D。我正在考虑 getchar() 但我需要将负数与正数分开,我认为这样会非常复杂。

最佳答案

您可以使用scanf尝试读取数字(这里我假设int),并使用getchar(或等效)来绕过两者数字的无效字符并检测 EOF:

#include <stdio.h>

int main()
{
for (;;) {
int v;

if (scanf("%d", &v) == 1)
printf("read %d\n", v);
else
// bypass invalid char
if (getchar() == EOF)
break;
}

puts("done");
}

编译结束执行:

pi@raspberrypi:/tmp $ gcc -pedantic -Wall -Wextra c.c
pi@raspberrypi:/tmp $ ./a.out
12 aze -23
read 12
read -23
3 e
read 3
done
pi@raspberrypi:/tmp $

在raspberrypi下我输入两个连续的control-d来表示EOF

使用echo也产生EOF:

pi@raspberrypi:/tmp $ echo "123 aze -23 " | ./a.out
read 123
read -23
done
pi@raspberrypi:/tmp $

当有无效字符时我选择只读取一个字符,也可以绕过该行的其余部分,或者停止读取数字,这是一种选择。

关于c - 在按下 CTRL+D 之前如何从键盘读取数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56295857/

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