C 从stdin检索字符

C 从stdin检索字符,c,string,file,input,char,C,String,File,Input,Char,如何从stdin获取字符。例如,如果stdin是push(“blah”),并且我想要检索第三个字符/字节,即“s”,我将如何进行呢?我不确定是否涉及到fgetc()或getchar(),我想尝试避免循环,但循环是迭代它的唯一方式,我能不能像getchar(3)类型的东西那样直接检索它?从stdin读取时,通常一次读取一行,那就用这个 因此,首先使用fgets读取一行,然后检查所读取内容 char line[100]; fgets(line, sizeof(line), stdin); if ((

如何从stdin获取字符。例如,如果stdin是
push(“blah”)
,并且我想要检索第三个字符/字节,即“s”,我将如何进行呢?我不确定是否涉及到
fgetc()
getchar()
,我想尝试避免循环,但循环是迭代它的唯一方式,我能不能像
getchar(3)
类型的东西那样直接检索它?

stdin
读取时,通常一次读取一行,那就用这个

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

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

标准输入通常不可查找,因此唯一可靠的读取方法是从一开始按顺序读取。有许多方法可以专门提取第三个
字符
,而无需循环:

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检查。在实际代码中,必须测试函数调用结果是否存在错误代码。第三,注意前两个示例丢弃了两个初始字符。以后再把他们弄回来是不可能的。如果您需要它们,您需要跟踪它们,例如,第三个选项允许。

第三个字节是
's'
?但是您可以执行
getchar();getchar();int c=getch()它不值得有一个循环。推送中的s(“blah”)很好,我正在从stdin读取,所以我也想读取推送部分。稍后是否要检查前面的字节?或者你只是想扔掉任意数量的输入字节?