设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 手机 公司
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

处于C语言中使用英文字符

发布时间:2022-07-01 10:47 所属栏目:51 来源:互联网
导读:前面我们多次提到了字符串,字符串是多个字符的集合,它们由 包围,例如http://c.biancheng.net、C语言中文网。字符串中的字符在内存中按照次序、紧挨着排列,整个字符串占用一块连续的内存。 当然,字符串也可以只包含一个字符,例如A、6;不过为了操作方便
  前面我们多次提到了字符串,字符串是多个字符的集合,它们由" "包围,例如"http://c.biancheng.net"、"C语言中文网"。字符串中的字符在内存中按照次序、紧挨着排列,整个字符串占用一块连续的内存。
 
  当然,字符串也可以只包含一个字符,例如"A"、"6";不过为了操作方便,我们一般使用专门的字符类型来处理。
 
  初学者经常用到的字符类型是 char,它的长度是 1,只能容纳 ASCII 码表中的字符,也就是英文字符。
 
  要想处理汉语、日语、韩语等英文之外的字符,就得使用其他的字符类型,char 是做不到的,我们将在下节《在C语言中使用中文字符》中详细讲解。
  字符的表示
  字符类型由单引号' '包围,字符串由双引号" "包围。
 
  下面的例子演示了如何给 char 类型的变量赋值:
  //正确的写法
  char a = '1';
  char b = '$';
  char c = 'X';
  char d = ' ';  // 空格也是一个字符
  //错误的写法
  char x = '中';  //char 类型不能包含 ASCII 编码之外的字符
  char y = 'A';  //A 是一个全角字符
  char z = "t";  //字符类型应该由单引号包围
  说明:在字符集中,全角字符和半角字符对应的编号(或者说编码值)不同,是两个字符;ASCII 编码只定义了半角字符,没有定义全角字符。
  字符的输出
  输出 char 类型的字符有两种方法,分别是:
  使用专门的字符输出函数 putchar;
  使用通用的格式化输出函数 printf,char 对应的格式控制符是%c。
 
  请看下面的演示:
  #include <stdio.h>
  int main() {
      char a = '1';
      char b = '$';
      char c = 'X';
      char d = ' ';
      //使用 putchar 输出
      putchar(a); putchar(d);
      putchar(b); putchar(d);
      putchar(c); putchar('\n');
      //使用 printf 输出
      printf("%c %c %c\n", a, b, c);
      return 0;
  }
  运行结果:
  1 $ X
  1 $ X
 
  putchar 函数每次只能输出一个字符,输出多个字符需要调用多次。
  字符与整数
  我们知道,计算机在存储字符时并不是真的要存储字符实体,而是存储该字符在字符集中的编号(也可以叫编码值)。对于 char 类型来说,它实际上存储的就是字符的 ASCII 码。
 
  无论在哪个字符集中,字符编号都是一个整数;从这个角度考虑,字符类型和整数类型本质上没有什么区别。
 
  我们可以给字符类型赋值一个整数,或者以整数的形式输出字符类型。反过来,也可以给整数类型赋值一个字符,或者以字符的形式输出整数类型。
 
  请看下面的例子:
  #include <stdio.h>
  int main()
  {
      char a = 'E';
      char b = 70;
      int c = 71;
      int d = 'H';
      printf("a: %c, %d\n", a, a);
      printf("b: %c, %d\n", b, b);
      printf("c: %c, %d\n", c, c);
      printf("d: %c, %d\n", d, d);
      return 0;
  }
  输出结果:
  a: E, 69
  b: F, 70
  c: G, 71
  d: H, 72
 
  在 ASCII 码表中,字符 'E'、'F'、'G'、'H' 对应的编号分别是 69、70、71、72。
 
  a、b、c、d 实际上存储的都是整数:
  当给 a、d 赋值一个字符时,字符会先转换成 ASCII 码再存储;
  当给 b、c 赋值一个整数时,不需要任何转换,直接存储就可以;
  当以 %c 输出 a、b、c、d 时,会根据 ASCII 码表将整数转换成对应的字符;
  当以 %d 输出 a、b、c、d 时,不需要任何转换,直接输出就可以。
 
  可以说,是 ASCII 码表将英文字符和整数关联了起来。
  再谈字符串
  前面我们讲到了字符串的概念,也讲到了字符串的输出,但是还没有讲如何用变量存储一个字符串。其实在C语言中没有专门的字符串类型,我们只能使用数组或者指针来间接地存储字符串。
 
  在这里讲字符串很矛盾,虽然我们暂时还没有学到数组和指针,无法从原理上深入分析,但是字符串是常用的,又不得不说一下。所以本节我不会讲解太多,大家只需要死记硬背下面的两种表示形式即可:
  char str1[] = "http://c.biancheng.net";
  char *str2 = "C语言中文网";
  str1 和 str2 是字符串的名字,后边的[ ]和前边的*是固定的写法。初学者暂时可以认为这两种存储方式是等价的,它们都可以通过专用的 puts 函数和通用的 printf 函数输出。
 
  完整的字符串演示:
  #include <stdio.h>
  int main()
  {
      char web_url[] = "http://c.biancheng.net";
      char *web_name = "C语言中文网";
      puts(web_url);
      puts(web_name);
      printf("%s\n%s\n", web_url, web_name);
      return 0;
  }
  关注公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读