C言語の文字

実際の開発では、プログラマはめったに主人公アレイを形成することができるよう、データの重要性を表明していない場合、単一の文字を含む文字列。このセクションでは、コードとASCII文字と整数との間の関係の関連知識を強調しました。

文字型char、唯一の単一引用符「」は、二重引用符「」囲んでいない囲まれています。二重引用符で文字列のみ、「
」サラウンドではなく、単一引用符によっては、「」囲まれています。

出力文字列%sを使用して%cから出力文字。

A、ASCIIコード表

ASCII(米国標準コードは、情報交換、情報交換用米国標準コードのための)主に現代英語や他の西ヨーロッパ言語を表示するために使用される符号化方式ラテンアルファベットに基づいたコンピュータであり、それは、今、最も一般的なシングルバイト符号化方式でありますこれは、国際規格ISO / IEC646に相当します。

ASCIIコードの仕様は、最初の1967年に出版され、最後の1986年に更新され、それが33の制御文字と95の印刷可能な文字が含まれています(特別な意味を持つ文字を表示することができません)。

1、ASCII制御文字(文字エンコーディング:0-31)

ASCIIコード表では、最初の32個の文字をコードする印刷に使用されるのではなく、プリンタのような同一の周辺装置を制御するために使用されます。

小数 シンボル 中国の解釈 小数 シンボル 中国の解釈
0 ヌル ヌル文字 16 DLE データリンクエスケープ
1 SOH タイトル開始 17 DC1 デバイス制御1
2 STX テキスト開始 18 DC2 制御装置2
3 ETX 終了テキスト 19 DC3 デバイス制御3
4 ROT 伝送終了 20 DC4 デバイス制御4
5 ENQ 頼みます 21 NAK 受け入れることを拒否
6 ACK 通知を受け 22 SYN 同期のアイドル
7 BEL ベル 23 ETB 伝送ブロック終結
8 BS バックスペース 24 できる キャンセル
9 HT 水平タブ 25 、IN メディア割り込み
10 LF 改行 26 サブ 置き換えます
11 VT 垂直タブ 27 ESC エスケープ文字
12 FF ページキー 28 FS ファイルの区切り
13 CR キーを入力してください 29 GS グループ・セパレータ
14 そう から 30 RS レコードの区切り
15 移入 31 我ら セパレータユニット

2、ASCII印刷可能な文字(文字コード:32-127)

95印刷可能な文字の合計。

1)図32は、空間です。

2)48から57個の10アラビア数字0〜9。

3)65大文字に90〜26。

4)97から122の26小文字。

5)句読点、演算記号の数の休息します。

6)最初の127の文字は、キーボード上のdeleteコマンドを表しています。

小数 シンボル 中国の解釈 小数 シンボル 中国の解釈
32 ブランク 80 P 大文字のP
33 感嘆符 81 Q 大文字Q
34 " 二重引用符 82 R 大文字のR
35 井号 83 S 大文字S
36 $ ドル記号 84 T 大文字のT
37 パーセント記号 85 ザ・ 大文字U
38 86 V 大文字のV
39 " 単一引用符 87 W 大文字W
40 左括弧 88 バツ 大文字のX
41 右括弧 89 大文字のY
42 * アスタリスク 90 とともに 大文字Z
43 + プラス 91 [ 左括弧
44 コンマ 92 \ バックスラッシュ
45 - ハイフンまたはマイナス記号 93 ] 右ブラケット
46 期間または小数点 94 ^ 分音
47 / スラッシュ 95 _ 下線
48 0 0 96 ` アクセント
49 1 1 97 A 小文字A
50 2 2 98 B 小文字B
51 3 3 99 C 小文字C
52 4 4 100 D 小文字D
53 5 5 101 E 小文字E
54 6 6 102 F 小文字F
55 7 7 103 グラム 小文字グラム
56 8 8 104 時間 小文字時間
57 9 9 105 小文字のI
58 コロン 106 J 小文字J
59 ; セミコロン 107 K 小文字のk
60 < 以下 108 リットル 小文字のL
61 = 等号 109 メートル 小文字メートル
62 > より大きい 110 n個 小文字のn
63 疑問符 111 インクルード 小文字のo
64 @ 電子メールのシンボル 112 P 小文字のp
65 A キャピタルレター 113 Q 小文字のQ
66 B 大文字B 114 R R小文字
67 C 大文字のC 115 S 小文字の
68 D 大文字のD 116 トン 小文字トン
69 E 大文字E 117 小文字のu
70 F 大文字F 118 V 小文字V
71 G 大文字のG 119 ワット 小文字のw
72 H 大文字H 120 バツ 小文字のx
73 大文字のI 121 小文字のy
74 J 資本手紙J 122 から 小文字のz
75 K 大文字のK 123 { 左ブレース
76 L 大文字L 124 | 縦線
77 M 大文字のM 125 } 右ブレース
78 N 大文字のN 126 チルダ
79 ザ・ 大文字O 127 [削除]

3、转义字符

对于 ASCII编码,0~31(十进制)范围内的字符为控制字符,它们都是看不见的,不能在显示器上显示,也无法从键盘输入,C语言又定义了一种简单的书写方式,即转义字符的形式来表示。

转义字符完整的列表如下:

转义字符 意义 ASCII码值 使用频率
\n 换行(LF) ,将当前位置移到下一行开头。 10 每天都用
\' 单引号。 39 常用
\" 双引号。 34 常用
\\ 反斜杠。 92 常用
\r 回车(CR) 13 windows平台常用,linux平台不常用。
\t 水平制表(HT) 。 9 20年前常用,现在不用。
\v 垂直制表(VT)。 11 20年前常用,现在不用。
\a 响铃(BEL)。 7 20年前常用,现在不用。
\b 退格(BS) ,将当前位置移到前一列。 8 20年前常用,现在不用。
\f 换页(FF),将当前位置移到下页开头。 12 20年前常用,现在不用。

\n是最常用的转义字符,表示换行,让文本从下一行的开头输出,前面的章节中已经多次使用。

\r\n用于windows平台DOS格式文件的换行。

单引号、双引号、反斜杠是特殊的字符,不能直接表示。

单引号是字符类型的开头和结尾,要使用\'表示。

双引号是字符串的开头和结尾,要使用\"表示。

反斜杠是转义字符的开头,要使用\\表示

示例(book67.c)

/*
 * 程序名:book67.c,此程序演示C语言的转义字符。
 * 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
  printf("输出'单引号\'的方法。\n");
  printf("输出双引号\"的方法。\n");
  printf("输出反斜杠\\的方法。\n");
  printf("单引号'不转义也能输出。\n");

  return 0;
}

运行效果

在这里插入图片描述

二、字符就是整数

字符和整数没有本质的区别。可以给 char变量一个字符,也可以给它一个整数;反过来,可以给 int变量一个整数,也可以给它一个字符。

char 变量在内存中存储的是字符对应的 ASCII 码值。如果以 %c 输出,会根据 ASCII码表转换成对应的字符,如果以 %d 输出,那么还是整数。

int 变量在内存中存储的是整数本身,如果以 %c 输出时,也会根据 ASCII码表转换成对应的字符。

也就是说,ASCII 码表将整数和字符关联起来了。

char类型占内存一个字节,signed char取值范围是-128-127,unsigned char取值范围是0-255。

如果整数大于255,那么整数还是字符吗?

描述再准确一些,在char的取值范围内(0-255),字符和整数没有本质区别。

字符肯定是整数,0-255范围内的整数是字符,大于255的整数不是字符。

示例(book68.c)

/*
 * 程序名:book68.c,此程序演示字符与整数的关系
 * 作者:C语言技术网(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>

int main()
{
  char a =  'E';
  char b =  70;
  int  c =  71;
  int  d = 'H';

  printf("a=%c, a=%d\n", a, a);
  printf("b=%c, b=%d\n", b, b);
  printf("c=%c, c=%d\n", c, c);
  printf("d=%c, d=%d\n", d, d);
}

运行效果

在这里插入图片描述

在ASCII码表中,E、F、G、H 的值分别是 69、70、71、72。

三、常用的库函数

以下是常用的字符函数,必须掌握。

int isalpha(int ch);  // 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0。
int isalnum(int ch);  // 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0。
int isdigit(int ch);  // 若ch是数字('0'-'9')返回非0值,否则返回0。
int islower(int ch);  // 若ch是小写字母('a'-'z')返回非0值,否则返回0。
int isupper(int ch);  // 若ch是大写字母('A'-'Z')返回非0值,否则返回0。
int tolower(int ch);  // 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')。
int toupper(int ch);  // 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')

以下是不常用的字符函数,极少使用,了解即可。

int isascii(int ch);  // 若ch是字符(ASCII码中的0-127)返回非0值,否则返回0。
int iscntrl(int ch);  // 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F),返回非0值,否则返回0。
int isprint(int ch);  // 若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0。
int ispunct(int ch);  // 若ch是标点字符(0x00-0x1F)返回非0值,否则返回0。
int isspace(int ch);  // 若ch是空格(' '),水平制表符('/t'),回车符('/r'),走纸换行('/f'),垂直制表符('/v'),换行符('/n'),返回非0值,否则返回0。
int isxdigit(int ch); // 若ch是16进制数('0'-'9','A'-'F','a'-'f')返回非0值,否则返回0。

四、课后作业

1)研究ascii码表,重点关心几个问题:

(1)字符是整数,整数可以进行加减运算,字符可以吗?

(2)字母'A'-'Z'、'a'-'z'和数字'0'-'9'的ascii码值是不是连续的?

(3)字母'A'和'a'、'Z'和'z'的ascii码值的差是多少?

2)根据上面的研究结果,编写函数,实现字符操作常用的库函数的功能,函数的声明如下:

int ISALPHA(int ch);   // 若ch是字母('A'-'Z','a'-'z')返回非0值,否则返回0。
int ISALNUM(int ch);   // 若ch是字母('A'-'Z','a'-'z')或数字('0'-'9'),返回非0值,否则返回0。
int ISDIGIT(int ch);   // 若ch是数字('0'-'9')返回非0值,否则返回0。
int ISLOWER(int ch);   // 若ch是小写字母('a'-'z')返回非0值,否则返回0。
int ISUPPER(int ch);   // 若ch是大写字母('A'-'Z')返回非0值,否则返回0。
int TOLOWER(int ch);   // 若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z')。
int TOUPPER(int ch);   // 若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z')

3)自定义一个函数,函数名是ctoi,利用ASCII码进行加减运算,把字符的'0'、'1'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'9'转换为整数的0、1、2、3、4、5、6、7、8、9。不允许用if和switch语句,只能用ASCII码运算,函数的声明如下:

int ctoi(const char chr);  // chr为用字符方式表示的数字,函数的返回值为数字的整数。

调用示例:

printf("'0' is %d\n",ctoi('0'));    // 输出结果是'0' is 0
printf("'9' is %d\n",ctoi('9'));    // 输出结果是'9' is 9

4)编写示例程序,测试char和unsigned char赋值超过取值范围的后果。

5)%不是转义字符,要输出%怎么办?

九、版权声明

C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
来源:C语言技术网(www.freecplus.net)
作者:码农有道

如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!

おすすめ

転載: www.cnblogs.com/wucongzhou/p/12498854.html