📄 00000002.htm
字号:
<HTML><HEAD> <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人: <A HREF="mailto:ax.bbs@bbs.ee.nthu.edu.tw.">ax.bbs@bbs.ee.nthu.edu.tw.</A> (athena), 信区: test <BR>标 题: 星星流讲座 0009 <BR>发信站: ☆清华电机☆ (Sun May 7 02:24:22 1995) <BR> <BR> <BR>第 3 讲 之 2 阵列与字串 <BR> Topic: Concept of String -- Character array <BR> <BR>前面谈到 C 语言使用 char 这个型别来存放字元,一个字元只能放一个 <BR>英文字,这对实际上的需求来说是不够的。我们常常需要储存一个字 (word) <BR>而非一个字元 (character),这个时候就必须找找有没有处理字串的功能 <BR>了。 <BR> <BR>C 语言并没有字串这种资料型态,它把字串看成是字元阵列。什麽是阵列 <BR>(array) 呢?我们以下面的图来说明: <BR> <BR> char a; <BR> ┌┐ <BR> └┘ <---- 只能放一个字元 <BR> <BR> char a[10]; <BR> ┌┬┬┬┬┬┬┬┬┬┐ <---- 可以放十个字元 <BR> └┴┴┴┴┴┴┴┴┴┘ <BR> <BR>一个基本型态的变数,一次只能存一笔资料。阵列型态的变数就不同了, <BR>它一次可以存很多笔资料,而且这些资料是循序地放置在阵列之中,由 <BR>第 0 个开始算起。C 把字串看成是字元阵列,因为字串就是字元依序 <BR>排列的结果,恰好可以利用字元阵列来达成,日後你会发现这个设计是非 <BR>常巧妙而有用的。 <BR> <BR>阵列的宣告是如 char a[10]; 这种型式,变数名字後面紧接著中括号,这 <BR>个中括号叫做「注标」,注标内括的数字就是这个阵列的大小,例如 a[10] <BR>就是由 a[0] 到 a[9] 一共 10 个元素。我们可以用像 a[0] 这种形式取出 <BR>阵列中某一个特定的元素,就好像使用一般基本型态的变数一样。 <BR> <BR>在 C 语言中,字串在字元阵列中的排列是像下图这种样子: <BR> <BR> a[0] a[1] a[2] a[3] a[4] a[5] <BR> ┌—┬—┬—┬—┬—┬—┐ <BR> │H │e │l │l │o │\0│ <BR> └—┴—┴—┴—┴—┴—┘ <BR> <BR>像 Hello 一共有五个字元,就存放於阵列中第 0 个到第 5 个的位置,最後 <BR>加上 \0 做为结束。前面已经提过逸出序列的用法,\0 是代表 ASCII 码为 0 <BR>的字元,它的意义就是 NULL (空字元),C 语言中以 \0 代表一个字串的结 <BR>尾,每个字串的最後都必须以一个 \0 代表字串结束。由於必须加上 \0 的 <BR>关系,所以每个字串必须配置一个比它的字元长度多 1 的阵列来存放才不会 <BR>产生错误,例如 Hello 一共五个字元,则我们必须配置一个 char a[6]; 的 <BR>阵列才能储存它。 <BR> <BR>那麽我要怎麽给定字串的初值呢?以下是一个最常见的错误: <BR> <BR> char a[6]; <BR> a = "Hello"; <BR> <BR>这种做法是错误的,字串不能以这种方式给定初值,如果要给定字串的初值, <BR>必须照像下面□例程式的作法: <BR> <BR>/* initstring.c */ <BR>#include <stdio.h> <BR>#include <string.h> <BR> <BR>main () <BR>{ <BR> char a[6]; <BR> strcpy (a, "Hello"); <BR> printf ("%s\n", a); <BR>} <BR> <BR>执行结果: <BR> <BR>Hello <BR> <BR>你必须 #include <string.h>,然後使用 strcpy 这个函数来给定字串的初 <BR>值,字串是以双括号 " 括起来的,和括字元用的单括号 ' 不同。程式中 <BR>printf 的参数 %s 是用来显示字串用的。 <BR> <BR>-- <BR>本文原作者为徐振家,原作刊载於星星神教总坛 ☆清华电机☆ test 板。 <BR>你可以以电子文件的形式将本文自由流传於台湾学术网路,但必须包含此版权声明。 <BR>原作者依中华民国著作权法之规定,享有本文之著作权,请勿抄袭以免触法。 <BR>未经授权任何人不得以任何形式对本文做任何修改及商业上之应用。 <BR>其他网路的转载或其他用途的应用,请先知会作者,并取得其同意。 <BR>对本文有任何疑问或意见请 mail 给 <A HREF="mailto:ax.bbs@bbs.ee.nthu.edu.tw,谢谢。">ax.bbs@bbs.ee.nthu.edu.tw,谢谢。</A> <BR> <BR> <BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -