我真的很困惑的用法getchar()
and scanf()
。这两者有什么区别?
我知道scanf()
[和家人]从用户[或文件]处获取一个字符一个字符并将其保存到一个变量中,但它是立即执行还是在按下某些内容后执行此操作(Enter
)?
我不太理解这段代码,我看到很多代码使用getchar()
它们都让你在屏幕上输入任何你想要的内容并且没有任何反应,但是当你按下enter
它退出了。
int j, ch;
printf("please enter a number : \n");
while (scanf("%i", &j) != 1) {
while((ch = getchar()) != '\n') ;
printf("enter an integer: ");
}
在这段代码中我不能使用scanf()
逐个字符地获取并测试它?另外,这一行是什么意思?
scanf("%i", &j) != 1
因为当我按 1 时,与按 2 时没有什么不同?这件作品有什么作用?
这条线什么时候会发生?
printf("enter an integer: ");
因为它永远不会发生。
Well, scanf
是一个多功能实用函数,可以根据格式字符串读取多种类型的数据,同时getchar()
只读取一个字符。
基本上,
char someCharacter = getchar();
相当于
char someCharacter;
scanf("%c", &someCharacter);
我不是100%确定,但如果你只需要读一个字符,getchar()
可能比“便宜”scanf()
,因为处理格式字符串的开销不存在(如果您阅读,这可能会很重要)many字符,就像在一个巨大的 for 循环中一样)。
对于第二个问题。
这段代码:
scanf("%i", &j) != 1
意味着你想要scanf
读取变量“j”中的整数。如果读取成功,即流中的下一个输入实际上是一个整数,scanf
将返回 1,因为它正确读取并分配了 1 个整数。
查看最旧的答案这个问题 https://stackoverflow.com/questions/10469643/value-returned-by-scanf-function-in-c欲了解更多详细信息scanf
返回值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)