什么时候需要吸收回车?或者其他字符。

一般是在这个时候前面是什么无所谓,关键是你在下一个scanf前面按了回车键而你的这个scanf又是接收字符串的。那就废了。原因分析如下,
  • 当你按下回车键的时候后面又是接收字符串的scanf或者是getchar他们由于要读取缓冲区里面的内容就会把这个回车都取到,而回车有恰恰是结束都取,所以就会直接结束!而如果你的后面的scanf不是读取字符比如你读取的是%d,那就不存在问题。还有就是如果你的下一次读取是字符串也是没关系的,因为在%s也是会过滤掉前面的空格 回车的。为什么不存在问题?那是因为整形输入会忽略之前的空格、回车,并且以之后的空格、回车作为输入整形结束的标志。
  • 还有就是不要有误区:不要认为你printf输出空格会影响scanf这完全是俩回事,因为printf输出的东西是在输出文件流而你在输入缓冲区。
  • 还有一种情况就是人家要求你输入整形数据%d,但是你偏偏要输入字符型数据,这时,这个字符型并不会被scanf读取走,下一次读取就会出现问题
这个时候缓冲区里面已经是上一次字符的ascii码了,可以读取了。就会出错。
时间: 2024-10-06 11:30:13

什么时候需要吸收回车?或者其他字符。的相关文章

c语言scanf()停止接受输入及scanf("%c",&c)吃掉回车或者空格字符的问题

scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束). ① 遇空格."回车"."跳格"键. ② 遇宽度结束. ③ 遇非法输入. 问题二:scanf()函数不能正确接受有空格的字符串?如: I love you! #include <stdio.h> int main() { char str[80]; scanf("%s",str); pr

oracle删除字段中的空格、回车及指定字符

create or replace procedure PROC_test is   --Description:删除字段中的指定字符(回车chr(13).换行chr(10))   --By LiChao   --Date:2016-03-01   colname varchar(20); --列名   cnt     number; --包含换行符的列的行数   v_sql   varchar(2000); --动态SQL变量begin   --读取表中的列   for col in (sel

C语言字符数组作业

一.PTA实验作业 题目1:7-1 字符串转换成十进制整数 1. 本题PTA提交列表 2. 设计思路 3.代码截图 4.本题调试过程碰到问题及PTA提交列表情况说明. 1.一开始我没想到怎么判断正负的问题,输出的结果只有正数,与样例不符合 2.第一次做的时候,我没有在a-f和A-F的字符转换后加10,使结果变小,参考了书上的转换后,我才发现漏了加10 题目2:7-16 Left-pad 1. 本题PTA提交列表 2. 设计思路 - 定义n(所要的长度),i,j(循环变量),m(数组长度),op(

统计字符(杭电1860)

/*统计字符 Problem Description 统计一个给定字符串中指定的字符出现的次数 Input 测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串.注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一.当读到'#'时输入结束,相应的结果不要输出. Output 对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出: c0 n0 c1 n1 c2 n2 ... 其中ci是第1行中

C语言学习笔记:19_数组-字符数组与字符串(常用字符串函数)

/* * 19_数组-字符数组与字符串.c * * Created on: 2015年7月7日 * Author: zhong */ #include <stdio.h> #include <stdlib.h> #include <string.h> /** *一:字符数组:就是存放字符的char[]数组 * 由于c语言中没有像java,C#中的String(字符串),只有存放字符 的字符型数组当字符串使用(java中的String类也是对字符数组进行封闭的). * *

HDU 1062.Text Reverse【栈或数组或字符串流】【字符处理】【8月30】

Text Reverse Problem Description Ignatius likes to write words in reverse way. Given a single line of text which is written by Ignatius, you should reverse all the words and then output them. Input The input contains several test cases. The first lin

c字符数组

一.PTA实验作业 题目1:统计一行文本的单词个数 1. 本题PTA提交列表 2. 设计思路 定义一个长度为1000的字符数组str[1000] 在定义 i=0,cnt=0:cnt用来记录单词的个数 while str[i]='\n'既输入回车时结束字符的输入 str[i]=0;设定结束的标志 for i=0 to str[i]='\0' if str[i]!=' '&&str[i+1]==' ';如果这个字符不为空格,并且下一个字符为空格. cnt++;让cnt+1; if str[i]

1054 字符串内排序

/* 题目描述: 输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串. 输入: 测试数据有多组,输入字符串. 输出: 对于每组输入,输出处理后的结果. 样例输入: bacd 样例输出: abcd */ # include <stdio.h> # include <string.h> int main(void) { int len,i,j; char s[210],temp; while(scanf("%s", s) != EOF) {

二叉树基础练习

前序遍历(先根遍历):根,左子树,右子树 中序遍历:左子树,根,右子树后序遍历:左子树,右子树,根 先序遍历:ABDECF 中序遍历:DBEAFC 后序遍历:DEBFCA 层次遍历:ABCDEF UVA 112  Tree Summing 题目:给你一个数和一棵树,问是否存在根到叶子的路径使得路径上的数字和与已知数相等. 注意数据中可能有负数 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #i