例4.16从键盘上输入一行英文字符串,判断该字符串的每一单词的第一个字母是否是大写,若不是,则改为大写字母。利用大小写对应ASCII码值之间的差值,可以很方便地完成大小写间的转换操作,如“ch[i]=ch[i]-32;”语句便实现了将小写字母转换成对应的大写字母。例4.17编写一个简单的密码程序。7438jkd你不是合法用户,不能进入本系统!例4.18从键盘上输入4个字符串,比较它们之间的大小关系,然后按从小到大的顺序存放到二维数组中并输出。......
2023-11-18
字符数组用来存放字符型数据,每个数组元素存放一个字符。在C 语言没有字符串变量,若要表示一个字符串时,可用字符数组来实现。字符数组的定义、初始化和引用与其他数组类似。
(1)一维字符数组的定义。
格式:
功能:定义一个一维字符数组,其中常量表达式的值就是字符数组元素的个数。
例如:
每个元素可以存放一个字符,例如:
图4.8 字符数组存储状态
字符数组与整型数据(ASCII 码)可以通用,因此也可以定义一个整型数组用来存放字符数据,例如:
(2)二维字符数组的定义。
格式:
功能:定义一个二维字符数组,常量表达式1×常量表达式2 的值就是字符数组元素的 个数。
例如:
该语句定义了一个数组名为c 的二维字符数组,该数组有3 行5 列共15 个元素,每个元素可存储一个字符,例如:
则该数组中存放了字符串“Bei Jing China”。
2.字符数组的初始化
字符型数组初始化的方法与数值型数组初始化的方法类似。
(1)一维字符数组初始化。
(2)二维字符数组初始化。
例如:
说明:① 若大括号中的初值多于数组的长度时,按语法错误处理。
② 若大括号中的初值少于数组的长度时,剩余元素自动定义为空字符‘\0’。
例如:
初始化状态如图4.9 所示。
图4.9 字符数组初始化状态
③ 如果字符数组的元素个数与初值相同,可在定义时省略数组长度。
例如:
字符数组c 的长度自动定义为12。
④ 也可以定义和初始化二维字符数组,方法与定义二维整型数据数组相同。
3.字符数组的引用
字符数组引用的方法与数值数组相同,格式如下:
一维字符数组:
二维字符数组:
【例4.6】在计算机屏幕上显示“for(i=0;i<9;i++)”。
(www.chuimin.cn)
程序运行结果如图4.10 所示。
图4.10 程序执行结果
【例4.7】利用二维字符数组输出一个钻石图形。
程序运行结果如图4.11 所示。
图4.11 程序运行结果
4.字符串
(1)字符串:是用双引号括起来的字符序列,也称为字符串常量。有效字符包括字母、数字、专用字符和转义字符等。例如,"I am a boy","No32","a+b","%d\n"。
(2)字符串结束标志:在C 语言中,约定‘\0’作为字符串的结束标志,占用一个内存单元,不计入字符串长度,即字符串在内存中所占的字节数=字符串的长度+1。在处理字符数组的过程中,遇到字符‘\0’,表示字符串结束。例如,字符串“I am happy”在内存中的存储形式如图4.12 所示。
图4.12 字符数组存储状态
(3)用字符串常量给字符数组赋初值:C 语言允许用字符串常量对字符数组初始化,即赋值。例如:
字符数组str 有12 个元素,在存储时占用13 个单元,最后一个存放结束标志‘\0’。C 语言并不要求所有的字符数组的末尾必须有一个结束‘\0’,为了处理方便,最好用‘\0’表示结束。
5.字符串输入/输出
(1)逐个字符输入或输出:用格式符“%c”输入/输出字符。
例如:输入并显示字符串“Liu Xiang”。
程序运行结果:
(2)将整个字符串一次全部或部分输入/输出:用格式符“%s”输出字符串。例如:从键盘上输入一个字符串,并显示在屏幕上。
程序运行结果:
6.字符串输入/输出时的注意问题
(1)输出字符串内容中不包括结束标志符\0。
(2)对字符数组按字符逐个输入/输出时,要用格式符%c,且指明数组元素的下标。字符数组整个输入或输出时只需用格式符%s,譬如printf(“%s”,数组名)。
(3)由于数组名是数组的起始地址,对字符数组输入时,只需写出数组名,不需要取地址运算符&,譬如:scanf(“%s”,数组名)。
(4)如果字符数组长度大于字符串实际长度,在按整个字符串输出时,遇‘\0’时结束。
例如:
程序运行结果:
(5)如果一个字符数组中包含一个以上‘\0’,则遇第一个‘\0’时输出结束。
(6)如果利用一个scanf 函数以格式符%s 输入多个字符串,则以空格分隔。例如:
输入数据:
在内存中数组 a、b、c 的状态如图4.13 所示。
图4.13 存储状态
(7)用printf 函数以格式符%s 输出字符串时,首先按字符数组名找到数组起始地址,然后从起始地址开始逐个输出其中的字符,直到遇上字符串结束符‘\0’时为止。例如:
程序运行结果如图4.14 所示。
图4.14 程序运行结果
有关C语言程序设计实用教程的文章
例4.16从键盘上输入一行英文字符串,判断该字符串的每一单词的第一个字母是否是大写,若不是,则改为大写字母。利用大小写对应ASCII码值之间的差值,可以很方便地完成大小写间的转换操作,如“ch[i]=ch[i]-32;”语句便实现了将小写字母转换成对应的大写字母。例4.17编写一个简单的密码程序。7438jkd你不是合法用户,不能进入本系统!例4.18从键盘上输入4个字符串,比较它们之间的大小关系,然后按从小到大的顺序存放到二维数组中并输出。......
2023-11-18
例4.7输出一个形如“丰”字的图形。图4.4例4.7输出结果从例4.7可知,逐个字符的输出,使用的格式符是“%c”;以字符串整体一次输出,使用的格式符是“%s”。例如下面的写法就是错误的:printf;如果数组长度大于字符串的实际长度,也只输出’\0’前的字符。其余的空格和回车符都被作为字符串的分隔符。......
2023-11-18
语句“Char*p=“C Language”;”的作用是使指针变量p指向字符串的起始地址,千万不要认为是将字符串中的字符赋给指针变量p。p是指向字符型数据的指针变量,它的值是地址。例7.18有一行字符,要求删除指定的字符。......
2023-11-18
";无论使用哪种形式,在此后的程序代码中,都可以使用字符指针变量sPtr表示字符串数据"I Love China!使用字符指针变量表示字符串数据时,最容易出现的错误就是将未确定指向的字符串指针变量直接使用。使用指向字符数组的指针变量处理字符串示例。......
2023-11-20
前面已经讨论了数组的输入输出,采用循环结构同样可以实现字符数组的输入输出。程序设计中常常希望将字符串作为整体进行输入输出处理,C标准库中提供了专门用于字符串输入输出的函数。字符串输入输出示例。......
2023-11-20
在C程序中,可以通过标准库函数fgets和fputs对文件中的字符串数据进行读写。函数fgets的返回值为s对象的首地址,若直接读到文件结尾标志或操作出错时则返回NULL。为了将输入的字符串分隔开,结合fgets函数在读到'\n'时会结束一次函数调用的特点,在每个字符串写入文件后再用fputc函数在字符串后写入一个换行符'\n',用以分隔写入的字符串数据。编写程序实现功能:打开例5.5创建的数据文件,将文件中的字符串数据读出并显示在屏幕上。......
2023-11-20
字符数组的初始化与一般数组的初始化类似,可以有完整赋值、部分赋值等情况。②使用字符串常量初始化字符数组。使用字符串常量对字符数组进行初始化时,系统会自动在末尾加上字符串结尾符号'\0',但定义的字符数组必须提供足够的长度。·如果没有指定字符数组的长度,系统自动指定为字符串常量中有效字符的个数+1。......
2023-11-20
图6.3二维数组a[3][4]示意图多维数组定义的一般形式为:数据类型符数组名[常量表达式][常量表达式]…图6.4二维数组存储示意图图6.5三维数组存储示意图根据多维数组在存储器中按行存储的规则和多维数组的行列顺序可以计算出多维数组元素存储时在线性连续存储单元中的排列序号。......
2023-11-20
相关推荐