关于字符型char变量

写程序时,意外发现个很不容易察觉问题出在哪的问题的

scanf("%c",&ch);
scanf("%c",&c);
printf("ch:%c\n",ch);
printf("c:%c\n",c);

如果输入是:a b

那么输出会是:ch:a

c:

问题出在哪?如果将代码改为:

scanf("%c",&ch);
scanf("%c",&c);
printf("ch:%c\n",ch);
printf("c:%d\n",c);//输出类型由%c,换为%d

同样的输入,输出是:ch:a

c:32

为什么是32?!?!因为空格space的ASCII值是32

可见char型变量能接受包括空格、回车在内的各种字符,并且scanf()函数也能处理。

那么,如何处理呢?方法就是:

在两个scanf()函数之间加入fflush(stdin)函数,以清除输入缓存。

这是字符型变量一个很容易忽视的小问题,以后一定要注意。

时间: 2024-11-05 13:34:16

关于字符型char变量的相关文章

关于指针 用字符数组,字符指针变量输入字符串 动态为字符型指针变量分配内存

#include <stdio.h> #include <iostream> #include<math.h> using namespace std; int main() { //声明字符型数组和指针变量 char str[10]; char *strip=str; //输入输出 cout<<"str="; cin>>str; //用字符数组输入字符串 cout<<"str="<<

基本类型:整型与字符型

一.整型int 1.1 概述 整数类型用来表示不同的取值范围和正负值,含义和数学一样,整数是没有小数部分的值: 区分正负的类型,称为有符类型(signed),无正负的类型(只有正值),称为无符类型. (unsigned):当声明某变量类型为无符号类型时,需要在类型声明前显示使用unsigned: 1.2 int类型 short int 类型:简写short,C规定占用的空间不能多于int long int 类型: 简写 long ,占用的空间可能比int多: long long int 类型:

【C语言】01-基本数据类型-字符型

字符串,它是多个字符的集合,例如 "abc123"."123\141\142\143":当然也可以只包含一个字符,例如 "a"."1"."\63". 不过为了使用方便,我们可以用 char 类型来专门表示一个字符,例如: char a='1'; char b='$'; char c='X'; char d=' '; // 空格也是一个字符 char e='\63'; //也可以使用转义字符的形式 char

字符型变量

我们都知道,除了数字以外还有其他符号,比如字母等等,这些符号就是字符,存储字符的变量就是字符型变量. 一个字符型变量只能存储一个字符,比如time这个单词,就需要四个字符变量来存储. 那么,思考下面几个问题: 字符型变量在计算机内是以什么形式存储的? 答案很显然,也是0110这类的二进制码. 那么,二进制码是怎么变成字符的? 这个问题就比较专业了,就是用到ASCII码.简单地说,就是哪个数字代表哪个字符都统一标准.比如65就代表A,97代表a. 所以实际上,字符型就是个整数. 字符型的定义: c

C语言中以十六进制输出字符型变量会出现&#39;ffffff&quot;的问题

最近在做一个C的嵌入式项目,发现在C语言中用printf()函数打印字符型变量时,如果想采用"%x"的格式将字符型变量值以十六进制形式打印出来,会出现一个小问题,如下: C代码   char buf[10] = {0}; buf[0] = 0xbf; printf("%2x\n\n\n", buf[0]);            /*在终端将会显示成:ffffffbf*/ buf[1] = 0x7f; printf("%2x\n\n\n", bu

让人又爱又恨的char(字符型)

今天来总结一下char型,平常写算法的时候对这个东西感觉都有一点绕着走,说到底还是对这部分的知识不熟悉所以有点怕他,不过以后不要怕,今天来总结一下 首先,说到字符型数据类型,char型,恩它是一种数据类型 然后,就是字符型变量 字符型变量的重点是将一个字符存入字符变量中,实际上存入的不是这个字符的形,而是这个字符的ASCII码 输入:getchar(); 输出:putchar(); getchar和scanf的区别在于他可以输入空格 字符型常量: 1.普通 'a' 2.转义 1.‘\t’ 斜杠+

java 复习-字符型变量

在java中,字符型变量用char 表示,用来存储字母.数字.标点符号等字符.占两个字节,用unicode编码,可以表示中文和英文.字符要用单引号包围.比如 'A'  '我' 注意事项:     有些特殊的字符,不能直接用单引号,要用转义字符表示.  (1) \n :表示换行  (2) \t :表示制表符,相当与Tab键  (3) \' :表示单引号  (4) \" :表示双引号  (5) \\ :表示一个斜杠"\"  package charTest; public cla

字符型变量/常量

字符型在内存中占2个字节,在Java中使用单引号来表示字符常量.例如'A'是一个字符,它与"A"是不同的,"A"表示含有一个字符的字符串. char 类型用来表示在Unicode编码表中的字符.Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符. [示例2-16]字符型举例 char eChar = 'a';  char cChar ='中'; Unicode具有从0到65535之间的编码,他们通常用从'\u0000'到'\uFF

再回首,Java温故知新(五):Java基本数据类型之字符型

Java作为一种强类型语言,意味着每一个变量都会有特定的类型,Java共有8种基本类型,其中有4种整型(byte.short.int.long).两种浮点型(float.double).1种字符型(char)和一种布尔型(boolean),值得注意的是,虽然字符串String非常常用,但是它却不属于基本类型. 三.字符型(接上篇浮点型) char类型用于表示单子字符,Unicode编码单元可以表示为十六进制,范围是从\u0000~\uffff,Java中的char类型使用16位的Unicode字