Is getchar() equivalent to scanf(“%c”) and putchar() equivalent to printf(“%c”)?

梦想的初衷 提交于 2019-12-18 11:58:21

问题


Is a = getchar() equivalent to scanf("%c",&a);?

Is putchar(a) equivalent to printf("%c",a); where a is a char variable?


回答1:


Generally speaking yes they are the same.

But they are not in a few nitpicky ways. The function getchar is typed to return int and not char. This is done so that getchar can both all possible char values and additionally error codes.

So while the following happily compiles in most compilers you are essentially truncating away an error message

char c = getchar();

The function scanf, though, allows you to use a char type directly and separates out the error code into the return value.




回答2:


They do the same thing here. However, if you know you are just doing characters then getchar and putchar will be more efficient, since the printf and scanf variants will have to parse the string each time to determine how to process your request. Plus, they may be called in a lower level library meaning you may not have to have the printf/scanf linked if they are not needed elsewhere.



来源:https://stackoverflow.com/questions/2482634/is-getchar-equivalent-to-scanfc-and-putchar-equivalent-to-printfc

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!