大一开学已经有两个月了,我之前从没有想到大学是这么的忙,尤其是这段时间,每天5个小时的睡眠让我不堪重负。
前段时间学习c语言时发现了些问题,总该记录一下:
首先是getchar()函数,记得以前我基本上是用它来做停顿用的,能让exe在windows环境下运行后不直接退出,可下面的代码发现了问题:
我运行了之后发现此exe停顿下来让我输入数据,想了想也没想出结果,于是百度了一下。原来,getchar()函数是从键盘缓冲区读取数据的,当键盘缓冲区存在数据时,不等待用户输入数据直接从缓冲区读取,知道用完为止,就好比阀门出水一样。因此,我应该加两个getchar()才能达到效果。那getch()呢?getch()与getchar()就不同了,因为getch()直接指向的是键盘这个“文件”,所以无论怎样它都会等待用户输入数据,而不会出现getchar()的情况,因此#include“conio”................getch()也能达到效果。接下来在看看scanf()这个函数,它也是从键盘缓冲区里读取数据的,因此在使用时就要注意键盘缓冲区是否有数据了。
example:
输出结果:
但要注意scanf()在接受'\n'时,只有输入的是%c型时才能在缓冲区读取'\n'。当是其它的数据类型时,scanf()函数会把'\n'读取出来,但是并不会接受'\n'这个值,也就是清除一个缓冲区的数据而已。
example:运行结果:
试试按完一行后,按n个空格或回车:
可见,getchar()和scanf()函数都可以起到清除键盘缓冲区的作用,但这样并不是很方便。c语言中有专门清除缓冲区的函数:fflush(stdin);
rewind(stdin);setbuf(stdin, NULL);但要注意的是,在linux操作系统下只能用setbuf(stdio,NULL)。
直到今天,我才知道c语言自带的函数也是有返回值的。例如scanf()函数,返回值是输入数据的个数,无数据输入时返回-1。所以,这也解决了我的一个问题,即scanf("%c",&a)!=EOF;c语严自带函数的返回值必要学学习一下,附下:
字符函数和字符串函数:
isalnum 是字母或数字返回1,否则返回0;
isdigit 是,返回1;不是,返回0;
strcat 返回str1;
strchr 返回指向该位置的指针,如果找不到,则返回空指针;
strcmpstr1<str2,返回负数;str1=str2,返回0;str1>str2,返回正数;
strcpy 返回str1;
strlen 返回字符个数;
tolower返回ch所代表的字符的小写字母;
输入输出函数:
close关闭成功返回0;不成功,返回-1;
eof 遇文件结束,返回1;否则返回0;
fclose 有错返回非0;否则返回0;
fgetc 返回所得到的字符,若读入出错,则返回EOF;
fgets返回地址buf,若遇文件结束或出错,返回NULL;
fopen 成功,返回一个文件指针(文件信息区的起始地址),否则返回0;
printf输出字符的个数,若出错,返回负数;
scanf读入并给args的数据个数,遇文件结束返回EOF出错返回0;
动态内存分配函数
calloc 分配内存单元的起始地址,如不成功,返回0;
free 无;
malloc 所分配内存区地址,如内存不够,返回0;
realloc返回指向该内存区的指针;
今天很晚了,好好睡一觉吧~~ 2011.10.30 3.01
分享到:
相关推荐
getchar与getch的区别,详细剖析了这两者之间的区别,深入浅出,容易理解。推荐!!!
大师级经典的著作,要字斟句酌的去读,去理解。以前在看K&R的The C Programming Language(SecondEdition)
今天再看getchar()函数,发现与scanf函数的知识混淆了,查找资料得出下面信息。
虽然这个问题很简单,但是估计很多人不会在意他们的区别,本人做了一个小小的总结,希望能帮到大家!
对函数scanf()、getchar()、gets()的异同进行深入剖析
getch()和getchar()的区别
以前在看K&R的The C Programming Language(SecondEdition)第1.5节的字符输入/输出,被getchar()和EOF所迷惑了。可能主要还是由于没有搞清楚getchar()的工作原理和EOF的用法。因此,感觉很有必要总结一下,不然,很多...
C++深入了解scanf()getchar()和gets()等函数
getch()、getche()与getchar()的区别与联系
getchar和gets和scanf区别 getchar 用于单个字符,gets(不推荐)用于字符串,而 scanf 用于各种不同的数据类型,通常需要使用格式字符串来指定输入的格式。在现代C编程中,推荐使用更安全的函数来代替 gets,如 ...
Windows下为组合键Ctrl+Z, Unix/Linux下为组合键Ctrl+D),那么只有当最后一个输入字符为换行符’\n'(也可以是文件结束符EOF,EOF将在后面讨论)时, getchar才会停止执行,整个程序将会往下执行。譬如下面程序段: ...
getche() 和getch()很相似,它也需要引入头文件conio.h,那它们之间的区别又在哪里呢?不同之处就在于getch()无返回显示,getche()有返回显示
c++中 getch()、getche()和getchar()总是大家迷惑的知识点 这里有他们之间的区别与联系 值得分析研究啊
讲解有关getchar getch getche getc 的相关用法。 以及相关的例子。 c语言 对非格式化输入输出的理解
C语言中getchar和 gets的区别。
如果读取失败(如文件结束),则返回特殊值EOF(End of File)。 一般情况下,我们可以将getchar函数与其他输入输出函数配合使用,实现对用户输入的处理。例如,可以使用一个循环来连续调用getchar函数,直到读取到...
如果读取失败或遇到文件结束符EOF,则返回-1。 运行示例程序,当用户输入一个字符后,程序会输出该字符的ASCII码值。例如,如果用户输入字符'A',程序将输出"你输入的字符的ASCII码是: 65"。 注意:getchar函数...
C语言程序设计(第2版)-2期 常见问题5-4 使用getchar函数读取字符出现错误.pdf 学习资料 复习资料 教学资源