1、连续接收输入字符时

int ch;

while(ch != EOF && ch != '\n')

ch 为什么被声明为整形,我们不是需要用它来读取字符的嘛?

因为:EOF是一个整形值,它的位数比字符类型要多,把ch声明为整型可以防止从输入读取的字符意外地被解释为EOF。但这也意味着接收字符的ch必须足够大,足以容纳EOF,这就是ch使用整型的原因。字符只是小整型数而已,所以用一个整型变量容纳字符值并不会引起任何问题。

2、一些常用的函数

printf()和scanf() 用于格式化的输出/输入,

getchar()和putchar()分别执行非格式化输入/输出

strncpy()

strcpy()

  第2个字符串参数将被复制到第一个字符串参数,第一个字符串原有的字符串将被覆盖。

strcat()

  接收两个参数,但它的第2个字符串参数添加到第1个字符串参数的末尾。

strcpy() 和strcat() 函数中他们的第1个字符串参数不能是字符串常量。而且,确保目标字符串有足够的空间是程序员的责任,函数并不对其进行检查。

strchr()

  它接收两个参数,第1个参数是字符串,第二个参数是一个字符。它在字符串参数内搜索字符参数第一次出现的位置,如果搜索成功就返回指向这个位置的指针,如果搜索失败就返回一个NULL指针。

strstr()

  和strchr()类似,但它的第二个参数是一个字符串。它搜索第2个字符串在第1个字符串中第一次出现的位置。

3、转义字符

  对字符转义要有一定的规则:

  1、字符集(Character Set)为每个字符分配了唯一的编号,我们不妨将它称为编码值。在C语言中,一个字符除了可以用它的实体(也就是真正的字符)表示,还可以用编码值表示。这种使用编码值来间接地表示字符的方式称为转义字符(Escape Character)。

转义字符以 \或者\x 开头,以\开头表示后跟进八进制形式的编码值。以\x开头表示后根十六进制的编码值。对于转义字符来说,只能使用八进制或十六进制。

如:char a = '\61'; // 字符1  八进制

  char b = '\141'; //字符a 八进制

  char c = '\x31'; //字符1 十六进制

  char d = '\x61'; //字符a  十六进制

注意:

·转义字符既可以用于单个字符,也可以用于字符串,并且一个字符串可以同时使用八进制和十六进制。

转义字符的初衷是用于ASCII编码(0-127),所以它的取值范围有限。

·八进制形式的转义字符最多后跟三个数字,即\ddd,最大值是\177

·十六进制形式的转义字符最多后跟两个数字,即 \xdd, 最大取值\x7f.(不是\xff).一般是\x后面+两位数字.不能超过3个,除非是以0开头.

转义符号\后面大于127编译器会报错的。

  补充:一般情况下字符集足够表达C语言所需的基本字符,但是也有一些字符集里面没有部分字符。

这时候我们要用三字母词两个问号??加已有字符来表示,这种情况极少出现:

??(

[

??)

]

??!

|

??<

{

??>

}

??’

^

??=

#

??/

\

??~

~

ASCII表的说明:

0~31 前32个是控制字符

32~127 是普通可输出字符

还有ASCII扩展表,一般用来打印西欧字符如: åß∂ƒ˙∆

128~255 是扩展ASCII表。键盘上用 alt + 可打印字符 或者 shift+alt+可打印字符来打印输出到屏幕。

¡™£¢∞§¶•ªº–≠œ∑´®†¥¨ˆøπ“‘«åß∂ƒ©˙∆˚¬…æΩ≈ç√∫˜µ≤≥÷
⁄€‹›fiflfl‡°··‚—±Œ„´‰ˇÁ¨ˆØ∏”’ÅÍÎÏ˝ÓÔÒÚÆ¸˛Ç◊ı˜Â¯˘¿

C和C指针小记(一)-字符输入,函数,ASCII扩展表的更多相关文章

  1. C和C指针小记(十二)-函数的可变参数表

    1.可变参数表是通过宏实现的 宏定义于stdarg.h头文件,它是标准库的一部分.这个头文件声明了一个类型var_list和三个宏--va_start.va_arg.va_end. 我们可以声明一个类 ...

  2. 【Go入门教程3】流程(if、goto、for、switch)和函数(多个返回值、变参、传值与传指针、defer、函数作为值/类型、Panic和Recover、main函数和init函数、import)

    这小节我们要介绍Go里面的流程控制以及函数操作. 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑.Go中流程控制分三大类:条件判断,循环控制和 ...

  3. Keil C51 中的函数指针和再入函数

    函数指针是C语言中几个难点之一.由于8051的C编译器的独特要求,函数指针和再入函数有更多的挑战需要克服.主要由于函数变量的传递.典型的(绝大部分8051芯片)函数变量通过堆栈的入栈和出栈命令来传递. ...

  4. C语言中指针变量如何向函数中传递

    指针变量存储的是地址,所以在函数调用的时候我们能否将指针变量传递给函数?如果不知道结果,那我们可以直接问电脑,输入如下一段代码. void GetMemory(char *p) { p = (char ...

  5. C和C指针小记(十七)-使用结构和指针-链表

    1.链表 链表(linked list)即使是一些包含数据的独立数据结构的(Node)集合. 链表中的每个节点通过链或指针链接在一起. 程序通过指针访问链表中的节点. 节点通常是动态分配的,但也有由节 ...

  6. this指针和const成员函数

    1.this指针 1)this指针是成员函数的隐式参数,成员函数通过this指针来访问调用它自己的那个对象,成员函数对各成员的访问均通过this进行 2)当某个对象调用它的成员函数时,编译器会把这个对 ...

  7. 【Go入门教程5】流程(if、goto、for、switch)和函数(多个返回值、变参、传值与传指针、defer、函数作为值/类型、Panic和Recover、main函数和init函数、import)

    这小节我们要介绍Go里面的流程控制以及函数操作. 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑.Go中流程控制分三大类:条件判断,循环控制和 ...

  8. C++ 函数的扩展④--函数重载与函数指针

    //函数扩展--函数重载与函数指针 #include<iostream> using namespace std; //函数参数类型不同 void Fuc(char * b){ print ...

  9. golang(3):strings和strconv使用 & 时间和日期类型 & 指针类型 & 流程控制 & 函数

    strings和strconv使用 . strings.HasPrefix(s string, prefix string) bool: // 判断字符串s是否以prefix开头 . . string ...

随机推荐

  1. SNFAutoupdater通用自动升级组件V2.0

    1.组件介绍 C/S构的特点是能充分发挥客户端的处理能力,很多工作可以由客户端处理后再提交给服务器,对应的优点就是客户端响应速度快模式客户端以其强大的功能,丰富的表现力受到相当大部分用户的青睐,但是客 ...

  2. Android Error:Execution failed for task ':app:compileDebugJavaWithJavac' 解决方案

    今天使用 Android Studio 构建项目的时候出现了这个错误 compileDebugJavaWithJavac 通过搜索发现造成该问题的原因有很多需要结合具体的项目进行排查 通过 Andro ...

  3. Django-Signals信号量

    信号量最为Django的一个核心知识点,在项目中很少有使用到,所以很多人都不了解或者没听过过(包括我).简单来说就是在进行一些操作的前后我们可以发出一个信号来获得特定的操作,这些操作包括(信息来自:h ...

  4. idea 添加项目到svn

    version control 改变项目为svn管理 如图  分享 share dic 添加新地址 share 剩下的 就是设置忽略目录 提交

  5. Vue+element组合el-table-column表头宽度自定义

    [本文出自天外归云的博客园] 需求 1. 某列表头文字内容过长,要对每列表头自定义宽度 2. 表格row的每一column文字不换行,超过列宽则省略,mouseover有提示 3. 对于label做滤 ...

  6. Mysql字符串字段中是否包含某个字符串,用 find_in_set

    有这样一个需求,在Mysql数据库字符串字段(权限)中,有范围在 1 到 N 之间代表不同权限的值,分别被‘,’分开,现在要取出具有某权限的所有成员列表. 创建表:   1 CREATE TABLE ...

  7. MT7601 WG209模块驱动移植,并连接路由器

    驱动位置: https://github.com/Aplexchenfl/WG209_MT7601 下载之后,查看 Makefile 在这里,我修改了 kernel的位置以及编译器的版本 执行 mak ...

  8. svn常见错误解决

    Svn冲突导致锁住的解决方案:错误码:svn: E155037: Previous operation has not finished; run 'cleanup' if it was interr ...

  9. winform 操作注册表提示没有权限解决办法

    1.打开VS2005.VS2008.VS2010.VS2012.VS2013.VS2015工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件:如没有,按如下方式 ...

  10. (实用)CentOS 6.3更新内置Python2.6

    在安装Kilo版的OpenStack时,我们发现社区已经将Python升到2.7,而CentOS 6.3上仍然在使用2.6版的Python.本文记录将CentOS 6.3内置的Python2.6更新为 ...