我如何从stdin获取char。例如,如果stdin是push("blah")
,并且我想要检索第三个字符/字节,那么我该怎么做呢?我不确定是否涉及fgetc()
或getchar()
,我想尝试避免循环,但是循环是迭代它的唯一方法,我不能直接检索它一个getchar(3)
类型的东西?
答案 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检查。在实际代码中,必须测试函数调用结果中的错误代码。第三,请注意前两个示例丢弃了两个初始字符。以后不可能让他们回来。如果你想要它们,你需要跟踪它们,例如,第三种选择允许。