getchar(),gets(),scanf()的差异比较】的更多相关文章

scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别.若想从键盘上输入字符串"hi hello",则应该使用gets()函数. gets可以接收空格:而scanf遇到空格.回车和Tab键都会认为输入结束,所有它不能接收空格. char string[15]; gets(string); /*遇到回车认为输入结束,并且回车键用‘\0’代替*/ scanf("%s",string); /*遇到空格认为输入结束*/ 所以在输入的字符串中包含空格时,…
getchar()和scanf("%c")的功能都是从STDIN读一个字符,单论功能两者没有区别. 但两者的返回值是有区别的: ------------------------------------------------ scanf()的详尽介绍请移步这里. ------------------------------------------------- scanf()的返回值的含义是: On success, the function returns the number of…
  1.getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了.       getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符,getchar带有回显.       与前面两个函数的区别在于: getchar()函数等待输入直到按回车才结束(前提是缓冲区没有数据),回车前的所有输入字符都会逐个显示在屏幕上.但只有第一个字符作为函数的返回值.     1 #include…
C中的缓冲区一直是debug的重灾区,今天在写一个命令行界面的时候又遇到了这个问题,所以来总结一波. 两函数的不同之处 scanf() 会把 stdinBuff 中的特定格式数据取出,非特定格式数据则会留在stdinBuff 中,比如 while(){ scanf("%c", ); } ,当你输入一个字符串+ 回车的时候,它先存入 stdinBuff 中,之后按char类型从 stdinBuff 取出每个字符,然后在把最后一个输入的 \n 留在 stdinBuff 中;当你输入一个字符…
scanf可以一次按照设定的输入格式输入多个变量数据.如int d,float f,char str[20],scanf("%d%f%s",d,f,str); getchar()只能输入字符型,输入时遇到回车键才从缓冲区依次提取字符. 如char ch;ch=getchar();输入abc\r(回车)ch=a;用在循环时也要等有回车键时才接收. char ch;while((ch=getchar())!='q'){printf("%c ",ch);…
慢慢的发现C语言功底是如此的薄弱,被这几个字符输入函数搞糊涂了又~~ 来,再来忧伤一次吧~ 那么.我们从scanf開始: 假如说你要将一串字符输入到一字符数组里,例如以下面程序, char a[2]; char b[3]; scanf("%s%s",a,b); printf("%s\n%s",a,b); scanf使用%s接收字符串.可是并非每个输入的字符都会被当做字符串处理.空格.tab.换行.都会被残忍的拒绝,因此输入一串"带有空格的字符串"…
getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了.getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符.getchar带有显示.与前面两个函数的区别在于: getchar()函数等待输入直到按回车才结束(前提是缓冲区没有数据),回车前的所有输入字符都会逐个显示在屏幕上.但只有第一个字符作为函数的返回值.#include<stdio.h>#include<con…
scanf().printf().getchar()和putchar()这四个函数能够让用户和程序交流,所以被称为输入/输出函数,或简称为I/O函数. 这里先结合缓冲输入来讲讲scanf()和getchar()背后的处理机制.还有空格回车输入跟scanf().getchar()的关联. 对于缓冲输入而言,键盘的输入不是实时被scanf响应的.首先存在缓冲当中. 当遇到换行.缓冲满.程序结束几种情况之一的时候,才会被送到scanf中. 而且scanf是以删除的方式从缓冲区读入数据(来自标准输入设备…
功能:同样是获取字符串. 区别: scanf 遇到空格/回车/Tab键认为输入结束, 但是空格/回车/Tab键仍会留在输入的缓冲区中.常见的是使用getchar(),处理scanf的后事:如果想要清除残余,可以使用fllush()清除缓存. gets 可以接收空格/回车/Tab键,回车结束输入,但是在Linux中gets是一个危险的函数,因为没有溢出检查:在window中gets是升级版的是安全的. 使用'\n'代替'\0',回车键不会留在输入缓冲区中. fgets  可以完美替代gets,只是…
1:scanf scanf会忽略开头所有的空格,并以Space Enter Tab 结束输入, 不会舍弃最后的回车符(即回车符会残存在缓冲区域中) 2:getchar getchar以Enter结束, 也不会舍弃最后的换行符 getchar可以读取scanf之后留在缓冲区域留下的换行符 也就是说用getchar和scanf读取数据之后缓冲区域会留下换行符,但是用gets读取之后缓冲区域不会留下换行符 3:gets 读取以任何字符开头的字符串, 以换行符结束,但是最后会舍弃换行符并以'\0'代替…
在论坛上看到有人提出一个如下的问题,在此总结一下. 原问题: http://topic.csdn.net/u/20110414/22/90d0606c-9876-48e4-9b69-bd8bd8a41897.html #include <stdio.h> int main() { int ival1 = 123, ival2 = 1; char ch = 't'; scanf("%d%d", &ival1, &ival2); scanf("%c&q…
习惯了c++的cin.cout之后,也不怎么关注空格,反正cin.cout会自动处理.有一次实验,创建Huffman树,要求输入空格字符,当时就懵逼了.cin咋输入空格呢? 没办法,只能重新用scanf函数了,结果各种悲剧,足足debug一个多小时,这难道就是越学越差劲系列?o(╯□╰)o scanf()和printf()严格来说并不是c的一部分,当我们用scanf()函数输入数据时,只要不回车,数据就暂存在缓冲区.因此我们可以输入一下 回车一下,也可以全部输完再回车,一般来说这两者没啥区别,但…
gets() 与 scanf() 函数相处呢有点小尴尬的,就是 gets() 在 scanf() 后边就爱捣乱.为什么呢,先了解它们两者之间的异同: 同: 都是可以接受连续的字符数据 并在字符结束后自动加上 '\0',标志结束接受 异: scanf 不能接受空格.制表符Tab.回车等,遇空格时就结束接受 gets 则能够接受空格.制表符Tab和回车等,遇回车或EOF(end of file)时都会结束接受 当 gets() 在 scanf() 后,结束输入 scanf() 后回车时,gets()…
1          字符串格式化输出和输入 1.1       字符串在计算机内部的存储方式 字符串是内存中一段连续的char空间,以’\0’结尾 “”是C语言表达字符串的方式 1.2       printf函数,putchar函数 printf格式字符 字符 对应数据类型 含义 d int 接受整数值并将它表示为有符号的十进制整数 hd Short int 短整数 hu Unsigned short int 无符号短整数 o unsigned int 无符号8进制整数 u unsigned…
如果您只想取得使用者输入的字元,則可以使用getchar(),它直接取得使用者輸入的字元并传回,如果只想要输出一個字元,則也可以直接使用putchar(),以下是个简单的例子: #include <stdio.h> int main(void) { char c; printf("请输入一个字元:"); c = getchar(); putchar(c); putchar('\n'); ; } 如果您輸入了兩個以上的字元,則getchar()會取得第一個字元,並將第二個字元…
1.类似的函数有:cin.getchar.fgetc 等 2.问题: 最后的"\n"都不取出来... 2.1.对策:(ZC:下面是 我自己使用后的感受) (1)fflush(stdin) ==> 没反应... _flushall();也没反应 (2)int _kbhit( void ); ==> 结果不准 <conio.h> 网上的资料:getchar,scanf,getch,这些,如果用户没有输入就会阻塞,如果不希望阻塞,应该怎么办?网上搜了一下,Linux可…
scanf 和 gets 读取字符串 深入了解scanf()/getchar()和gets()等函数 scanf与gets函数读取字符串的区别 今天看到一段话,大致是说gets比scanf()快,有点吃惊,搜了一下,scanf()和gets的区别大致有着几条: 1.scanf() 会忽略行开头的所有空格,并以空格.换行符结束输入: 使用getchar()读取scanf语句执行后,缓冲区留下的换行符, gets读入以任何字符开始的字符串,以换行符结束,但之后会丢弃换行符并以'\0'代替: 2. 在…
以下内容主要来源: scanf与gets读取字符串 scanf与gets函数读取字符串的区别 前两天有个同学问我scanf与gets的区别说了半天也没说出来个所以然,就搜了一下,scanf()和gets的区别大致有着几条: 1.scanf() 会忽略行开头的所有空格,并以空格.换行符结束输入: 使用getchar()读取scanf语句执行后,缓冲区留下的换行符, gets读入以任何字符开始的字符串,以换行符结束,但之后会丢弃换行符并以'\0'代替: 2. 在数据大量的情况下,用gets读取快于s…
第 8 章 字符输入/输出和输入确认 在本章中你将学习下列内容: · 有关输入,输出以及缓冲和非缓冲输入之间的区别的更多内容. · 从键盘模拟文件结尾条件的方法. · 如何重定向将你的程序与文件相连接. · 使用户界面更加友好. 在计算机世界中,我们在很多场合下都使用词语输入(input) 和输出(output).例如,在讲输入和输出设备(如键盘,磁盘驱动器和激光打印机等)时,在指用于输入和输出的数据时,以及在指执行输入和输出任务的函数时.本意集中讨论用于输入和输出(简称为 I/O)的函数. I…
单字符 I/O:getchar() 和 putchar() getchar() 和 putchar() 每次只处理一个字符 getchar() 和 putchar() 都不是真正的函数,它们被定义为供预处理器使用的宏 getchar() 不带任何参数,它从输入队列中返回下一个字符 例如,下面的语句读取下一个字符输入,并把该字符的值赋给变量 ch ch = getchar(); 等同于 scanf("%c", &ch); putchar() 打印它的参数 例如,下面的语句把之前赋…
http://poj.org/problem?id=1144 题意:给你一些点,某些点直接有边,并且是无向边,求有多少个点是割点 割点:就是在图中,去掉一个点,无向图会构成多个子图,这就是割点 Tarjan算法求割点的办法 如果该点为根,那么它的子树必须要大于1 如果该点不为根,那么当low[v]>=dnf[u]时,为割点 Low[v]>=dnf[u]也就是说明U的子孙点只能通过U点访问U的祖先点 #include <stdio.h> #include <stack>…
/////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行(3)拥有资源:进程是拥有资源的独立单位,线程不拥有系统资源,但可以访问…
Wireless Network Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 24497   Accepted: 10213 Description An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have set up a wireless network with the lap compute…
C语言的几个输入输出函数 #include <stdio.h> getchar(),putchar() scanf(),printf() 1->getchar()与scanf()唯一的区别是getchar()不会跳过'\n'或者空格,例如如下 #include <stdio.h> #include <stdlib.h> int main() { int ch; int a,b; printf("enter a char ,enter to quit\n&…
POJ 1236 给定一个有向图,求: 1) 至少要选几个顶点,才能做到从这些顶点出发,可以到达全部顶点 2) 至少要加多少条边,才能使得从任何一个顶点出发,都能到达全部顶点 第一个就是缩点之后有多少入度为0的个数因为一定要从这些节点出发 第二个就是因为图本身就是联通的,设入度为0的点有n个,出度为0的点有m个, 那么入度的编号为N0,N1,N2,N3...Nn,出度编号为M0,M1,M2...Mm  那么连N0->M0->N1->M1->N2->M3.这样形成环啦那连到Mi…
LJOJ 1500: 题目:http://www.docin.com/p-601990756.html Sol:贪心,从叶子结点往上加入无法传递了,就需要建设. Dfs返回的是到达叶子节点最多所要的能量,如果大于最大能量就需要建设放大器. #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ; using namespace std; int head[M…
http://acm.hdu.edu.cn/showproblem.php?pid=1237 表达式计算,方法是中缀转后缀,再计算.中间处理用栈操作 讲解看http://blog.csdn.net/antineutrino/article/details/6763722 这题是简易版本的,不用处理括号 #include <iostream> #include <cstdio> #include <cstring> #include <stack> using…
05:统计单词数 总时间限制:  1000ms 内存限制:  65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数. 现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置.注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样…
============ 怎么处理一行空格中的逗号, ,,, ,,, ,,, c,c,d,d 使用c++的方法,可以这么处理: #include <sstream> #include<algorithm> using namespace std; 将数据放入string dataline中, replace(dataline.begin,dataline.end(),',',' '); istringstream myInstream(dataline); while(myInst…
今天来总结一下char型,平常写算法的时候对这个东西感觉都有一点绕着走,说到底还是对这部分的知识不熟悉所以有点怕他,不过以后不要怕,今天来总结一下 首先,说到字符型数据类型,char型,恩它是一种数据类型 然后,就是字符型变量 字符型变量的重点是将一个字符存入字符变量中,实际上存入的不是这个字符的形,而是这个字符的ASCII码 输入:getchar(); 输出:putchar(); getchar和scanf的区别在于他可以输入空格 字符型常量: 1.普通 'a' 2.转义 1.‘\t’ 斜杠+…