在C语言中,gets和scanf用来记录字符串的输入,而getch和getchar用来接收字符输入,东西多了就是记不住,免得每次都要去网上翻翻,不如在自己还能记得住的时候做个笔记。
下面只简单记录,详细的可以去网上找:
scanf:它遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。
而gets则只认为回车符才是输入结束。
相同的地方是:在字符串接受结束后都自动加'\0'。
- #include <stdio.h>
- main()
- {
- char ch1[10],ch2[10],c1,c2;
- scanf("%s",ch1);
- c1=getchar();
- gets(ch2);
- c2=getchar();
- }
依次键入asdfg回车,asdfg回车,则ch1="asdfg\0",c1='\n',ch2="asdfg\0",c2需输入。
scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中。下次如果调用会直接先拿缓冲区中的数据。
其实也可以清空,编译器提供了清空缓冲区函数,fflush(stdin);
gets:可接受回车键之前输入的所有字符,并用'\n'替代 '\0'.回车键不会留在输入缓冲区中
其实就是gets函数在读取字符串时将删除结尾的换行符。
II:
gets可以用来读取字符串输入,scanf可以读取任何类型的。
III:
getchar:它有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).
getch:只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行.