C语言 从标准输入中检索字符



我怎么会从标准中得到一个字符。例如,如果 stdin 是push("blah"),并且我想检索第 3 个字符/字节,即"s",我将如何去做?我不确定是否涉及fgetc()getchar(),我想尝试避免循环,但是循环是迭代它的唯一方法吗,我不能像getchar(3)类型一样直接检索它吗?

stdin读取时,您通常希望一次读取一行,然后使用它。

因此,首先使用 fgets 读取一行,然后检查读取的内容。

char line[100];
fgets(line, sizeof(line), stdin);
if ((strlen(line) > 2) && line[2] == 's') {
    printf("got sn");
}

标准输入通常不可寻,因此唯一可靠的读取方法是从头开始按顺序读取。 您可以通过多种方式专门提取第三个char而无需循环:

int c1;
char c2;
char c3;
char buf[4];
// approach 1:
getchar(); getchar(); c1 = getchar();
// approach 2:
scanf("%*c%*c%c", &c2);
// approach 3:
fgets(buf, sizeof(buf), stdin);
c3 = buf[3];

请注意,这些是供个人使用的,而不是顺序使用的;它们一起呈现是为了便于演示。 另请注意,重要的是,在这些示例中没有执行错误/EOF检查。 在实际代码中,必须测试函数调用结果的错误代码。 第三,请注意,前两个示例丢弃了两个初始字符。 以后不可能让他们回来。 如果你想要它们,你需要跟踪它们,例如,第三种选择允许。

最新更新