程序中 不可打印字符

不可打印字符(Nonprinting Characters)

 

    有些ASCII 字符是不可打印的。例如退格、另起一行、警报等。C语言提供了两种方法来表示这种不可打印字符。

    第一种方法是使用ASCII 编码。例如,ASCII 编码中,7 用于表示警报:

    char beep = 7;

    第二种方法是使用特殊符号序列,也就是所谓的转义字符escapesequences)。参见下表:

转义字符及其含义

 转义字符 

含义
\a 警报(Alert (ANSI C) )
 \b   退格(Backspace)
  \f   换页(Formfeed)
 \n      换行(Newline)
 \r  回车(Carriagereturn)
 \t   水平制表符(Horizontaltab)
\v    垂直制表符(Verticaltab)
  \\   反斜杆(Backslash (\) )
     \'  单引号(Single quote (') )
  \"  双引号(Double quote (") )
   \?             问号(Question mark (?) )
  \0oo   八进制数(Octal value (o 代表一个八进制数字) )
   \xhh      十六进制数(Hexadecimal value (h 代表一个十六进制数字) )
  

    给变量赋值的时候,转义字符必须使用单引号引住。例如:

         char nl = '\n';

下面我们详细学习每个转移字符的含义。

 

    \a(警报)是ANSI C89 添加的,用于产生可听或者可视的警报。\a产生的效果取决于硬件。一般来说,输出\a 会产生鸣响。但是在某些系统,输出\a 不会产生任何效果,或者仅仅显示一个特殊字符。标准明确指出,\a 不应该改变当前活跃位置(activeposition)。所谓活跃位置,是指显示设备(显示器、打字机、打印机等等)显示下一个字符的位置。以显示器为例,活跃位置就是指光标所处的位置,输出\a 不会导致光标移动位置。

 

\b、\f、\n、\r、\t,以及 \v 都是输出设备控制符。退格符(\b)使当前行的活跃位置后退一个位置。换页符(\f)使活跃位置跳到下一页的开端。注:换页符可用于控制打印机换页,但不会导致PC 机的显示屏换页。换行符(\n)使活跃位置跳到下一行的开端。回车符( \r )使活跃位置返回当前行的开端。水平制表符(\t)使活跃位置移动若干个位置(通常是8个)。垂直制表符(\v)使活跃位置换若干行。注:\v可用于控制打印机换若干行,但是不会导致PC机的显示屏换行。

    \\、\',以及 \" 使我们可以把 \,' 和 " 用作字符常量。如果要打印以下句子:

"\ iscalled 'backslash'."

我们需要使用如下语句:

printf("\"\\is called \'backslash\'.\"");

    \0oo 和 \xhh 是ASCII码的两种特殊表示形式。如果想用八进制ASCII码表示字符,可以在八进制数前面加上 \ ,然后用单引号引起来。例如:

           beep ='\007';        

打头的那些0可以省略,也就是说,写成'\07' 或者 '\7' 都一样。无论有没有打头的0 ,7 都会被当成八进制数处理。

    从C89 开始,C提供了用十六进制表示字符常量的方法:在反斜杆后面写一个 x ,然后再写 1 到 3个十六进制数字。例如

           nl ='\xa';         

    注意:使用ASCII码时,要注意区分数字4的ASCII码是52,'4' 代表字符 4 ,而不是数字4。此外,尽管 '\n' 和 '\xa' ,'\a' 和 '\007'是等价的,但是我们应该尽可能使用 '\n' 和 '\a' ,而不要用 '\xa' 和 '\007'。这是因为前者易懂、便于记忆,而且移植性更高。而后者只对使用ASCII码的系统有效。和数字字符。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用 Python 的内置函数 `type` 和列表推导式来去除列表字符串类型的元素。 下面是一个例子: ``` # 定义一个列表 my_list = [1, 2, 'a', 'b', 3, 4, 'c'] # 使用列表推导式和 type 函数过滤出数值类型的元素 filtered_list = [x for x in my_list if type(x) != str] print(filtered_list) # 输出: [1, 2, 3, 4] ``` 在上面的代码,我们定义了一个名为 `my_list` 的列表,该列表包含数值和字符串类型的元素。然后,我们使用列表推导式和 `type` 函数过滤出数值类型的元素。最后,我们使用 `print` 函数输出过滤后的列表。 注意:这种方法只能用于去除列表字符串类型的元素,如果要去除其他类型的元素,可以使用类似的方法。 ### 回答2: 要去除Python程序列表字符串类型的元素, 可以使用列表推导式或循环来实现。 方法一: 使用列表推导式 列表推导式是一种简洁的Python语法,可以通过对一个可迭代对象进行循环迭代,并根据指定的条件来生成一个新的列表。在这种情况下,可以使用列表推导式来筛选出非字符串类型的元素,从而去除字符串类型的元素。 ```python lst = ['apple', 1, 'orange', 2, 'banana', 3] new_lst = [x for x in lst if not isinstance(x, str)] ``` 在上述示例代码,我们使用了一个简单的条件 `not isinstance(x, str)` 来判断元素是否为字符串类型。如果是字符串类型,则这个元素不会被包含在新列表 `new_lst` 。 方法二: 使用循环遍历 另一种方法是使用循环遍历,并利用条件语句来判断元素的类型。在循环,根据元素的类型决定是否将其添加到一个新的列表。 ```python lst = ['apple', 1, 'orange', 2, 'banana', 3] new_lst = [] for x in lst: if not isinstance(x, str): new_lst.append(x) ``` 上述示例代码,我们使用了一个空列表 `new_lst` 来存储非字符串类型的元素。在循环,如果元素不是字符串类型,则将其添加到新列表。 无论你选择哪种方法,都能去除列表字符串类型的元素并生成一个新的列表。根据实际情况选择最适合的方法。 ### 回答3: 要去除Python程序列表字符串类型元素,可以使用列表推导式和类型判断来实现。 列表推导式是一种简洁的方式来创建新的列表,它可以根据某个条件过滤原始列表的元素。在这种情况下,我们需要判断元素的类型是否为字符串,如果不是字符串,则将其保留到新列表。 下面是一个示例程序: ```python # 原始列表 original_list = [1, 'hello', 2, 'world', 'python', 3] # 使用列表推导式和类型判断去除字符串类型元素 new_list = [x for x in original_list if type(x) != str] # 输出新列表 print(new_list) ``` 在上面的程序,我们首先创建了一个原始列表`original_list`,其包含了不同类型的元素,包括整数和字符串。 然后,我们使用了一个列表推导式,在循环遍历原始列表的每个元素时,判断其类型是否为字符串。如果不是字符串,则将该元素添加到新列表`new_list`。 最后,我们打印输出了新列表`new_list`,其只包含了原始列表的整数类型元素,而字符串类型的元素被去除了。 运行上述程序,输出结果为:`[1, 2, 3]`。 通过这种方式,我们可以轻松地去除Python程序列表字符串类型元素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈言必行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值