我想了解一下下面的代码的getchar()逻辑...的getchar()函数逻辑
printf("Type up to 25 characters and then press Enter. . . \n") ;
for (i = 0; i < 25; i++)
{
msg[ i] = getchar() ;
if (msg[ i] == ' \n')
{
i--;
break;
}
}
putchar(' \n') ;
for (; i >= 0; i--)
{
putchar(msg[ i]) ;
}
在上面的代码,如果我输入一个名字,说“STACKEXCHANGE “,然后按下回车键,将显示单词properly..but下面的代码的工作方式不同..
printf("What are your two initials?\n") ;
firstInit = getchar() ;
lastInit = getchar() ;
在这个例子中,如果i型‘ST’,然后按下回车键,‘S’将被存储在firstinit,而“\ n”将存储在lastInit而不是'T'中。
这是怎么发生的?不是'T'输入到缓冲区的第二个字符。 Infact \ n是缓冲区中的第三个字符。所以为什么要存储。如果iam错误,纠正我,但是当按下或输入时释放缓冲区,那么为什么它会再次存储在下一个getchar()函数中。
为什么第一个代码执行不同呢?我的意思是如果我输入“stackexchange”并按回车键“t”作为第二个字符存储,但在第二个例子中,如果输入相同的“st”并输入“enter”,则“t”是不存储为第二个输入,而是将“输入”作为第二个输入。
我很抱歉,如果我的打字是混乱...基本上,我想知道在这两个代码的逻辑流程,它是如何发生的幕后..
“在这个例子中,如果我输入“ST”然后回车,'S'将被存储在杉木中stinit,而“\ n”将存储在lastInit而不是'T'中。“ - 这是不正确的。尝试一下。 – 2015-01-21 08:42:11
@Reeza - 你真的在你的第二个例子中输入“ST”吗? – Sadique 2015-01-21 08:45:41
嗯..我真的很困惑现在..实际上我解除了这两个例子从交流文本书...可以解释如何getchar()逻辑工作 – ReezaHendricks 2015-01-21 08:47:51