从stdin检索char

时间:2016-06-01 18:23:54

标签: c string file input char

我如何从stdin获取char。例如,如果stdin是push("blah"),并且我想要检索第三个字符/字节,那么我该怎么做呢?我不确定是否涉及fgetc()getchar(),我想尝试避免循环,但是循环是迭代它的唯一方法,我不能直接检索它一个getchar(3)类型的东西?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

标准输入通常不可寻找,因此唯一可靠的读取方式是从头开始。有许多方法可以在没有循环的情况下专门提取第三个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检查。在实际代码中,必须测试函数调用结果中的错误代码。第三,请注意前两个示例丢弃了两个初始字符。以后不可能让他们回来。如果你想要它们,你需要跟踪它们,例如,第三种选择允许。