第六讲二级C字符串
二级C语言PPT教学课件_10_字符串与字符指针
a[j] = '\0'; puts(a);
24
字符串函数
3
puts
字符串 输出
gets
字符串 输入
strlen
字符串长度
strcpy
字符串 复制
strcat
字符串 连接
strcmp
[2007.4.10]以下程序的运行结果是
9
printf("%d", strlen("IBM\n012\1\\"));
[2010.3.31]以下程序的运行结果是
5,5
char s1[10] = "abcd!", *s2 = "\n123\\";
printf("%d,%d", strlen(s1), strlen(s2));
17
字符串函数
2
puts
字符串 输出
gets
字符串输入
strlen
字符串 长度
strcpy
字符串 复制
strcat
字符串 连接
strcmp
字符串 比较
18
gets与scanf
gets scanf
gets函数读取字符串,直至遇到 换行符为止,然后把换行符替换 为空字符'\0'。
scanf函数遇到空格或换行符时 输入结束,输入有空格的字符串 时,须用gets。
不能给数组a输入字符串的语句是
A)gets(a);
全国计算机二级C语言常考题型专题讲座
全国计算机二级C语言常考题型专题讲座字符串长度的计算方法提示:(1)计算字符串长度时关键是要注意辨认转义字符;(2)一个转义字符总是以反斜杠开始,再加一个其他字符组成。
所以,遇到反斜杠时要特别注意!!!1、不带转义字符的字符串如:“abc!x=/”,其长度为 72、带转义字符的字符串(1) 字符串“abc\n”:其中的'\n'为转义字符(换行符),计算字符串长度时只能计作一个字符,所以该字符串的长度为4(而不是5)(2) 字符串“abc\n\\\'\"":其中有4个转义字符:'\n'(换行符)、'\\'(反斜杠)、'\''(单引号)、'\"'(双引号),所以该字符串的长度为7(而不是11)。
(3) 字符串“abc\0xyz”:其中有一个转义字符'\0',它是字符串结束符,所以,当用函数strlen来测试该字符串的长度时,结果应该为3(而不是7)。
(4) 字符串“abc\\0xy”:其中有一个转义字符'\\'(反斜杠),这样,后面的字符串“0xy”照样计算,所以,该字符串的长度为7(而不是将第二个反斜杠与其后的0结合为一个转义字符'\0',若那样的话,第一个反斜杠将无法处理,因为一个转义字符总是由反斜杠加其他字符组成的,单独的一个反斜杠不能作为任何合法的字符)。
(5) 若将字符串“abc\\0xy”改为“abc\\\0xy”:则其中有二个转义字符'\\'(反斜杠)和'\0'(字符串结束符),这时,当用函数strlen来测试该字符串的长度时,结果应该为4(而不是7)。
(6) 若将字符串“abc\\\0xy”改为“abc\\\061xy”:则其中有二个转义字符'\\'(反斜杠)和'\061'(ASCII码值等于061的字符,也即数字字符'1'),这时,当用函数strlen来测试该字符串的长度时,结果应该为7(而不是4或9)。
2019年最新-全国计算机等级考试实用应试教程二级C语言字符串-精选文档
下面介绍几种常用的字符串处理函数。
1.字符串复制函数
作用是把一个字符串全部或部分复制到另一个字符 串尾部。其基本函数有两个。
(1) strcpy(字符数组1,字符串2)
功能:把字符串2复制到字符数组1中去(即给一个 字符数组赋值)。
(2)strncpy(字符数组1,字符串2,n)
我们还可以通过定义字符型指针数组并通过赋初 值来构成一个类似的字符串数组。例如:
char *p[3]={“a”,”bb”,”ccc”};
指针数组p的每个元素指向一个字符串,即p的 每个元素中存放着一个字符串的首地址。
此时,指针元素指向长度不同的无名一维字符 数组,各字符数组之间并不占连续的存储单元, 它们的联系全依赖与p指针数组元素,一旦p指针 数组中的元素地址被重新赋值,则相应的字符串 将丢失。
2.用给以一般数组赋初值的相同方式给一维字符数 组赋初值
按照一维数组的赋初值的方式,把初值依次放 入一对花括号内
3.在赋初值时直接赋字符串常量 可以直接用字符串常量给一维数组赋初值,例
如: char str[10]={“string”}; 或
char str[10]= “string”; 此时,由于“string”是字符串常量,系统已自
10.2 使指针指向一个字符串
10.2.1 通过赋初值的方式使指针指向一个字符串
可以在定义字符指针变量的同时,将存放字符 串的存储单元起始地址赋给指针变量。也可以先 定义一个存放字符串的字符数组,并将数组的首 字地址赋给指针变量。
10.2.2 通过赋值运算使指针指向一个字符串
若已定义一个字符指针变量,可以通过赋值运 算将某个字符串的起始地址赋给它,从而使其指 向一个具体的字符串
计算机二级C语言知识点(字符串)
计算机二级C语言知识点(字符串)计算机二级C语言知识点(字符串)字符串与字符数组1.字符数组的定义定义方法与前面介绍的类似,只是将数组定义为字符型即可。
例如:charc[10];这里定义了一个包含10个元素的字符数组c。
2.字符数组的初始化对字符数组初始化,可以采用以下方法:(1)逐个字符赋给数组中各元素;(2)用字符串常量使字符数组初始化。
3.字符串在C语言中,字符串是作为字符数组来处理的,字符串可以存放在字符型一维数组中,故可以把字符型一维数组作为字符串变量。
字符串常量是用双引号括起来的一串字符。
C语言中约定用′\0′作为字符串的结束标志,它占内存空间,但不计入串的长度,′\0′的代码值为0。
系统对字符串常量也自动加一个′\0′作为结束符。
例如″clanguage″共有10个字符,但在内存中占11个字节,最后一个字节存放′\0′。
4.字符数组的输入输出(1)逐个字符输入和输出①在标准输入输出printf和scanf中使用%c格式描述符;②使用getchar和putchar函数。
例如:for(i=0;i10;i++)scanf(″%c″,str[i]);/*或str[i]=getchar();*/str[i]=′\0′;/*人为加上串结束标志*/for(i=0;i10;i++)printf(″%c″,str[i]);/*或putchar(str[i]);*/(2)字符串整体输入输出①在标准输入输出函数printf和scanf中使用%s格式描述符;输入形式:charstr[6];scanf(″%s″,str);其中str为字符数组名,代表着str字符数组的起始地址,输入时系统自动在每个字符串后加入结束符′\0′。
若同时输入多个字符串,则以空格或回车符分隔。
输入形式:printf(″%s″,str);输字符串时,遇第一个′\0′即结束。
但可人为控制输出串所占的域宽如:printf(″%6s″,str);/*若字符串中字符多于6个,仍将全部输出*/ printf(″%-6s″,str);/*只输出前6个字符,多余的不输出*/②使用gets和puts函数输入输出一行gets函数用来从终端键盘读字符,直到遇换行符为止,换行符不属字符串的内容。
C二级第06章-字符数据-演示
第5章 字符型数据
例6.2: 等待回车字符
#include<stdio.h> main() { continue\ printf("Press Enter to continue\n" ); while(getchar()!='\ while(getchar()!='\n'); …… }
19/23
第5章 字符型数据
例6.3:一行小写字母变大写字母 一行小写字母变大写字母
#include<stdio.h> main() { char c; !='\ while ( (c=getchar() ) !='\n') { c=c-('a'if(c>='a'&& c<='z') c=c-('a'-'A'); putchar(c); } putchar('\ putchar('\n'); }
第 6 章 字 符 型 数 据
C语言程序设计
第6章 字符型数据 章
6.1 字符型常量 6.2 字符变量 6.3 字符的输入和输出
第5章 字符型数据
6.1.1 字符常量
是用一对单撇号括起来的一个字符, 是用一对单撇号括起来的一个字符,如: '#' '' '9' ‘A’ ‘a' #include <stdio.h> void main(void) { char ch; ch='a'; printf("%c",ch); }
c=B,ASCII=66 c=D,ASCII=68 c=F,ASCII=70 c=H,ASCII=72 c=J,ASCII=74 c=L,ASCII=76 c=N,ASCII=78 c=P,ASCII=80 c=R,ASCII=82 c=T,ASCII=84 c=V,ASCII=86 c=X,ASCII=88 c=Z,ASCII=90
二级C(数据类型)资料
8
基本类型 类型 整型 短整型 大小 4B 2B 常量 23(十) 027(八) 0x17(十六) 变量 int a,b; short int a,b;
15 (-32768--32767)
长整型
4B
36
72L
long int a,b;
无符号整型 单精度 双精度 字符型 4B 8B 1B
。。。。。。 3.14 3.14 1.25e3 (7个有效位) 1.25e3 (15个有效位) float a,b; double a,b; 。。 char a,b; 。。
串长度:字符个数 “good” “A” “” “\\a:\\b” 串长 4 串长 1 串长 0 串长 5 占5B 占2B 占1B 占6B
回9
23
2018/10/22
变量赋值
1.先定义后赋值
int a,b,c; char d; float f; a=2; b=5; c=10; d=′a′; f=5.7;
2018/10/22
2
二、 关键字
关键字是C语言已经定义的、具有特殊功能和含义的单词、 单词缩写或者单词组合。以下列出的是C语言的关键字:
auto
default float struct volatile
break
do for
case
double goto
char
else if
const
enum int
C语言的标识符必须按以下规则构成 :
(1)必须以英文字母或下划线开始,并由字母、数字和下划
线组成。例如:chABC,intX,uY126 等都是合法的标识符,而 555Str,-chabc,+intJ等则是非法的标识符。 (2)每个标识符可以由多个字符组成,但只有前 8个标识符 为有效标识符。例如:employee1和employee2 被认为是相同的 标识符employee。 (3)大写字符和小写字符代表不同的标识符。 (4)不能使用C语言的关键字作为标识符。
计算机二级C语言、 字符型数据
第六章字符型数据1.字符型常量(1)普通字符常量:单引号括起来的一个字符,C语言中一个字符常量代表ASCII字符集中的一个字符,且有一个对应的ASCII 数值(字符在内存中以ASCII代码值形式存放)字符常量在内存中占一个字节,存放的是字符的ASCII代码值。
C语言规定,所有的字符常量都作为整型量来处理,在计算机内部,其对应的数值就是ASCII字符集中的字符序号。
(2)转义字符常量:反斜线后跟一个特定的字符,代表一个字符。
同样包含在单引号内。
\n回车换行光标回到下一行的首位置\r回车光标回到当前行的首位置\b 退格\f 换页符\t 横向跳格\v 竖向跳格\\ 输出\\' 输出'\" 输出"\0空值,其ASCII代码值为0 NULL \ddd1--3位的八进制数,代表一个ASCII字符‘\101’‘\0101’...\10‟ (010)‘\0‟‟\00‟\xff1--2位的十六进制,代表一个ASCII字符‘\x ab’…\x f‟总结:形式:‟a‟…A‟…0‟………*‟…\n‟…\022‟…\xa‟值:ASCII存放形式及其计算形式:ASCII(3)字符串常量:双引号括起来的一串字符。
C语言中系统在每个字符串后自动加入一个字符’\0’.作为字符串结束标志。
形式:“”空串“a”“aA01*\n\0777\xaa”存放:串结束标志\0字符串常量所占的内存空间: “”0+1 "a" 1+1 “01234”5+1 "sfsd\n\\\xa\v a\"" 10+1扩充:“12345\012345”(4)字符量进行运算:①大小写转换:A 65+0 a 97+0B 65+1 b 97+1C 65+2 c 97+2…….Z 65+25 c 97+25…0‟48+0…1‟48+1….…9‟48+9①32②基数+序列号=字符③大小写序列号相同加减32…A‟+32 ‘a‟…a‟-32 …A‟字符=基数+序列号大写字母ch求小写字母?已知:大写字母,小写基数求:小写字母小写字母=‟a‟+序列号ch-…A‟=‟a‟+(ch-…A‟)应用举例:大小字母间互相转换ch 小写-----大写ch-32…A‟+(ch-…a‟)要求把某一个小写字母转换为其后面的第一个字母“abcz”“bcda”“abxyz”“bcyza”ch0----24 1----2525 0if(ch>=‟a‟&&ch<=‟y‟)ch=ch+1;ch=‟a‟;0---22 3---25 %23 26-26 0 26%26 024 27-26 1 27%26 125 28-26 2 28%26 2 if(ch>=‟a‟&&ch<=‟w‟)ch=ch+3;if(ch==‟x‟) ch=‟a‟;if(ch==‟y‟) ch=‟b‟;if(ch==‟z‟) ch=‟c‟;if(ch>=‟a‟&&ch<=‟w‟)ch=ch+3;if(ch>=‟x‟&&ch<=‟z‟)ch=ch+3-26;ch=…a‟+(ch-…a‟+2)%26ch=‟a‟+(ch-…a‟-2+26)%26 “abcd”“zabc”2----25 0---230 24 (0-2+26)%261 252 03 1 (3-2+26)%264 2….25 23②数字字符与其对应数值间转换数字字符的对应数值为该数字字符在数字字符表里的序列号字符序列号数值…0‟0 0…1‟ 1 1…….…9‟9 9加减48…0‟-48 ? 0…9‟9字符-基数=对应的数值…0‟-…0‟?0…9‟-…0‟?9应用:123456789“1234”1234 4321取数组数ch …1‟ 1 1***** ****1 …2‟ 2 12*** ****21…3‟ 3 123** ***321…4‟ 4 1234 4321y=y*10+(ch-…0‟);{y=y+(ch-…0‟)*t; t=t*10;}③关系运算及其逻辑运算‘a‟>‟A‟ 1‘\0‟&&‟0‟0‘1‟||…0‟ 12.字符变量把字符放入字符变量中时,字符变量的值为该字符的ASCII值。
第六章全国计算机二级C语言课件new.ppt
注意:若程序中用到上面两个函数,则在程序的开头 注意:若程序中用到上面两个函数, 加上#include “stdio.h” 加上
2010年12月4日星期六 主讲教师:李 黎 14
真题选讲
2010年12月4日星期六
主讲教师:李 黎
15
程序举例
1.、printf 语句中,第一个 用%c输出一个字符,第二个 用%d输出字符 、 语句中,第一个ch用 输出一个字符 第二个ch用 输出一个字符, 输出字符 代码值。 的ASCII代码值。 代码值 2、printf语句后面的回车换行符是“\n” (双引号),而 putchar语句后面 语句后面的回车换行符是“ 双引号), ),而 、 语句后面的回车换行符是 语句后面 的回车换行符是’\n’(单引号)。 的回车换行符是 (单引号)。 3、从本例中掌握小写字母转换为大写字母的方法。 、从本例中掌握小写字母转换为大写字母的方法。
2010年12月4日星期六 主讲教师:李 黎 16
★
1、while((c=getchar())!=‘\n’)这句话经常考到,请考生注意。它的意思是,如果输 、 这句话经常考到, 这句话经常考到 请考生注意。它的意思是, 入的不是回车符,则执行下面的循环;也就是说,如果输入用回车符结束, 入的不是回车符,则执行下面的循环;也就是说,如果输入用回车符结束,则 循环也就结束了。 循环也就结束了。 2、if(c>=‘a’&&c<=‘z’)这句话是判断小写字母的方法。如果一个字符的 这句话是判断小写字母的方法。 、 这句话是判断小写字母的方法 如果一个字符的ASCII值 值 >=’a’的ASCII值,<=’z’的ASCII值,则这个字符一定是小写字母。 的 值 的 值 则这个字符一定是小写字母。 3、c=c-(‘a’-’A’)用小写字母 减去大写字母和小写字母的差值,得出的字母就是大写 用小写字母c减去大写字母和小写字母的差值 、 用小写字母 减去大写字母和小写字母的差值, 字母,可直接写成c=c-32。因此公式可写为:小写字母 - 32=大写字母;大写字 大写字母; 字母,可直接写成 。因此公式可写为: 大写字母 小写字母。 母+32=小写字母。 小写字母
全国计算机二级C语言知识点复习 字符串
xx年全国计算机二级C语言知识点复习字符串【考点1】字符串常量及表示字符串常量是由双引号括起来的一串字符,如”ABC”。
在存储字符串时,系统会自动在其尾部加上一个空值’\0’,空值也要占用一个字节,也就是字符串”ABC”需要占四个字节。
【考点2】字符数组C语言没有字符串变量,只能采用字符数组来存储字符串。
数组的大小应该比它将要实际存放的最长字符串多一个元素,从而存放’\0’。
【考点3】字符串赋值字符串赋值的两种形式:char str[]=“Hello!”;或char *p;p=“Hello!”;,但不能用下面的形式:char str[10];str=”Hello”;因为str是一个地址常量,不能进行赋值操作。
【考点4】字符串的输入与输出可以用scanf和printf函数,如scanf(”%s”,str);,也可用专门处理字符串的两个函数gets和puts函数,还可以对字符数组逐个元素进行赋值,但一定要在最后赋一个’\0’。
使用gets函数可以接收空格,使用puts函数在最后输出一个换行。
scanf 和 gets 的数据:如果输入的是 good good study!那么scanf(“%s”,a); 只会接收 good. 考点:不可以接收空格。
gets(a); 会接收 good good study! 考点:可以接收空格。
【考点5】字符串函数要掌握的四个字符串函数:字符串拷贝函数strcpy(),求字符串长度函数strlen(),字符串链接函数strcat(),字符串比拟函数strcmp()。
使用这些函数需在预处理局部包含头文件”string.h”。
字符串长度要小于字符数组的长度,例:charstr[10]=”Hello”;sizeof(str)的值为10(数组长度),strlen(str)的值为5(字符串长度)。
这些函数是考试常用到的函数,大家一定要熟练应用这几个函数。
二级C语言字符串
strncmp()
比较两个字符串的前n个字符。
示例
strcmp("Hello", "World")返回值小 于0。
04 字符串应用
字符串在排序中的应用
冒泡排序
通过比较相邻字符串,交换顺序,将最大或最小字符串移到正确位置。
选择排序
在未排序的字符串中找出最小(或最大)的字符串,存放到排序序列 的起始位置。
比较两个文件中的字符串是否相同或相似 。
THANKS FOR WATCHING
感谢您的观看
二级C语言字符串
contents
目录
• 字符串基础 • 字符串操作 • 字符串函数 • 字符串应用
01 字符串基础
字符串的定义
字符串是由字符组成的序列。 在C语言中,字符串通常以字
符数组的形式存储。
字符串的长度是指其包含的 字符数,不包括终止符'0'。
字符串的终止符'0'用于标识字 符串的结束。
通过建立字典并使用索引来压缩数据。
Burrows-Wheeler算法
通过旋转和排序字符串来压缩数据。
字符串在文件操作中的应用
文件读取
文件写入
使用fgets或fread函数从文件中读取字符串 。
使用fprintf或fwrite函数将字符串写入文件 。
文件查找
文件比较
使用fseek和ftell函数在文件中查找特定字 符串的位置。
字符串的存储
1
字符串通常存储在字符数组中,数组中的每个元 素存储一个字符。
2
字符串的存储空间包括字符数组本身和终止符'0'。
3
计算机二级C语言
四、字符数组的输入与输出 printf函数输出字符串 函数输出字符串。 1、 printf函数输出字符串。 说明: 格式符, 说明:用“%s”格式符,意思是输出字符串。 %s 格式符 意思是输出字符串。 char str[ ]=“He\0llo”; ]= He\0llo ; He
printf(“%s ,str); printf( %s”,str); %s 注意:%s要求str为输出字符串的首地址,直到’ 时 注意:%s要求str为输出字符串的首地址,直到’\0’时, 要求str为输出字符串的首地址 结束输出。分析下面的语句输出的结果。 结束输出。分析下面的语句输出的结果。 char ]=“He 0llo”; He\ str[ ]= He\0llo ;
strcpy(str1,str2);
char *strcopy(char *d,char *s) { char *p=d; while(*s!='\ while(*s!='\0') { *p=*s; p++; s++; } *p='\ *p='\0'; return d; }
2.strcmp(s1,s2) strcmp(s1,s2) 作用:比较字符串s1和s2的大小。 作用:比较字符串s1和s2的大小。 s1 的大小 例如:strcmp(s1,s2); 例如: strcmp(“China , Korea”); strcmp( China”, “ Korea ); China Beijing”); strcmp(s1, “Beijing ); Beijing 比较的结果由函数值带回: 比较的结果由函数值带回: ①如果s1=s2,函数值为0。 如果s1=s2,函数值为0 s1=s2 ②如果s1>s2,函数值为一正整数(大于0)。 如果s1>s2,函数值为一正整数(大于0 s1>s2 ③如果s1<s2,函数值为一负整数(小于0)。 如果s1<s2,函数值为一负整数(小于0 s1<s2 说明:字符串比较方法是逐个比较字符的ASCII码值。 说明:字符串比较方法是逐个比较字符的ASCII码值。 ASCII码值
二级C语言字符串
2 输出
使用printf函数将字符串输出到屏幕上。
字符串格式化输出
使用printf函数中的格式化占位符(如:%s、%d)来格式化输出字符串。
字符串的扫描和搜索
字符串扫描
使用sscanf函数从字符串中读取 特定格式的数据。
字符串搜索
使用strstr函数在字符串中搜索指 定子串的位置。
二级C语言字符串
探索C语言中的字符串操作,从定义到处理,让你成为字符串的专家!
字符串概述
什么是字符串?
C语言中用于表示文本的一 串字符。
字符串的特点
使用字符数组来存储字符串, 以'\0'结尾,可变长度。
ASCII vs Unicode
ASCII编码是7位字符编码, Unicode编码支持全球范围 内的字符表பைடு நூலகம்。
2
字符串分割
使用strtok函数将一个字符串按指定分隔符分割成多个字符串。
3
字符串合并
将多个字符串合并为一个字符串,可以使用sprintf函数。
字符和字符串数组
字符数组 字符串数组 字符指针
存储C语言中的单个字符 存储多个字符串的数组 指向字符串的指针,具备字符串操作的能力
字符串的输入输出函数
1 输入
常见字符串操作
• 字符串长度计算 • 字符串复制与连接 • 字符串分割与拆分
字符串比较与拼接
字符串比较
使用strcmp函数进行字符串的比较操作,返回比较 结果。
字符串拼接
使用strcat函数将两个字符串连接在一起。
字符串复制和分割
1
字符串复制
使用strcpy函数将一个字符串复制到另一个字符串。
c二维字符串参数
c二维字符串参数C语言是一种广泛应用于系统软件开发的编程语言,它以其简洁、高效和可移植性而闻名。
本文将在标题为“C语言的特点和应用领域”的主题下,介绍C语言的特点以及它在不同领域的应用。
一、C语言的特点1. 简洁高效:C语言采用了简洁的语法规则,使得代码易于编写和理解。
它还具有高效的执行速度,这使得C语言成为了开发系统软件的首选语言之一。
2. 可移植性:C语言的代码可以在不同的计算机平台上进行编译和执行,这使得开发人员可以轻松地将代码移植到不同的操作系统和硬件平台上。
3. 强大的控制结构:C语言提供了丰富的控制结构,如条件语句、循环语句和跳转语句,使得开发人员可以灵活地控制程序的流程。
4. 丰富的数据类型:C语言支持多种数据类型,包括整型、浮点型、字符型等,开发人员可以根据需要选择合适的数据类型来存储和处理数据。
5. 库函数丰富:C语言提供了大量的库函数,这些函数可以帮助开发人员完成各种常见的任务,如文件操作、字符串处理、内存管理等。
二、C语言的应用领域1. 操作系统开发:C语言是开发操作系统的主要语言之一,因为它能够直接访问硬件和操作系统的底层功能,并且具有高效和可移植性。
2. 嵌入式系统开发:C语言在嵌入式系统领域也有着广泛的应用。
由于嵌入式系统通常资源有限,需要高效的代码和紧凑的程序,C 语言正好满足这些需求。
3. 游戏开发:C语言在游戏开发领域也有着重要的地位。
游戏通常需要处理大量的图形和音频数据,C语言的高效性和丰富的库函数可以满足这些需求。
4. 数据库管理系统:C语言在数据库管理系统的开发中也扮演着重要的角色。
数据库系统需要高效地管理大量的数据,C语言的高效性和可移植性使得它成为了数据库系统的首选语言之一。
5. 网络编程:C语言在网络编程领域也有着广泛的应用。
网络编程需要处理网络通信、数据传输等复杂的操作,C语言提供了丰富的库函数和接口来简化这些操作。
6. 科学计算:C语言在科学计算领域有着广泛的应用。
计算机二级C语言字符串
第十章字符串1.存放字符串(1)用一维字符数组存放字符串①C语言对字符串的约定“abcd”存放:借助一维字符型数组存放占空间:4+1实际长度:4②C语言中字符串常量的约定1010.0‘a’‘\n’‘\77’‘\xaa’“”“a”“sdfs”‘\0’自动加#define PI 3 .14159#defien N 6③C语言中字符串常量给出的是地址值字符串常量实际可理解为一个一维字符型数组。
但这个一维字符型数组没名字,C编译系统读取到这一串存储单元的首地址。
字符串实际被隐含的处理为一个以’\0’结尾的无名一维字符型数组。
举例:char s[10],*p; “abcd”s=”abcd”;s[0]=’a’;s[1]=’b’;s[2]=’c’;s[3]=’d’;s[4]=’\0’p=”abcd”; 首地址④一维字符数组和字符串的区别及其联系区别:字符数组:char a[5];5 任意的字符字符串:“abcd”无名\0联系:字符型数组的最后一位位置存放’\0’,则它可理解为字符串常量。
字符串为字符数组的特例。
(2)用赋初值的方式将字符串写入一维字符数组中①数组赋初值的方式“abcd”4+1char a[4]={‘a’,’b’,’c’,’d’};char a[5]= {‘a’,’b’,’c’,’d’};char a[5]= {‘a’,’b’,’c’,’d’,’\0’};char a[10]= {‘a’,’b’,’c’,’d’};char a[10]= {‘a’,’b’,’c’,’d’,’\0’}; char a[]={‘a’,’b’,’c’,’d’}; 4char a[]={‘a’,’b’,’c’,’d’,’\0’}; 5②直接将字符串常量给一维字符数组“abcd”4+1char a[4]= “abcd”; 非法char a[5]=”abcd”;char a[10]=”abcd”;char a[]=”abcd”; 常用总结:“abcd”4+1char a[]={‘a’,’b’,’c’,’d’,’\0’};char a[]=”abcd”;char *p=”abcd”;(3)执行过程中将字符串写入一维字符数组中①不可用赋值语句给字符数组整体赋一串字符“abcd”char a[5];a=”abcd”; 非法char a[5]=”abcd”,b[5];b=a; 非法②给字符数组逐个赋字符值,最后人为加入’\0’“abcd”“fssdfsfsajdklasdl kldfladf”char a[5];a[0]=’a’;a[1]=’b’;a[2]=’c’;a[3]=’d’;a[4]=’\0’;for(i=0;i<4;i++)scanf(“%c”,&a[i]); abcda[i]=’\0’; 人为输入2.字符串与指针(1)赋初值时使指针指向一个字符串char *p=”abcd”; 首地址char a[]=”abcd”,*p=a;(2)赋值运算(可执行语句中)使指针指向一个字符串char *p;p=”abcd”;char a[]=”abcd”,*p;p=a;(3)字符数组存放字符串和指针指向字符串间的区别char a[]=”abcd”; 内容char *p=”abcd”; 首地址a数组中:内容:可变存储空间:固定p是一个指针变量:可指向其它地方3.字符串的输入和输出单个字符处理(%c getchar….)整串处理可用%s“abcd”#include<stdio.h>main(){char a[5];int i;for(i=0;i<4;i++)a[i]=getchar();a[i]=’\0’; abcda[0]=’a’‘b’ ‘c’‘d’‘\0’for(i=0;i<4;i++)putchar(a[i]); abcd(1)条件char a[]=”abcd”,*p=a;输入项:字符数组名,字符指针变量,字符数组元素的地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
给出以下定义:
char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'};
C
则正确的叙述为( )。
A) 数组X和数组Y等价 B) 数组x和数组Y的长度相同
C) 数组X的长度大于数组Y的长度
D) 数组X的长度小于数组Y的长度
字符串的结束标志:‘\0’。 注:C语言无字符串类型,字符串是存放在字符数
组中的。
第六讲二级C字符串
2. 用字符串来直接初始化字符数组 可直接把字符串写在花括号中来初始化字符数组. 如:char ch[9]={“student”};字符串和数组长度?
s t u d e n t \0
系统将双引号括起来的字符依次赋给字符数组的各个元 素, 并自动在末 尾补上字符串结束标志字符'\0'。
第六讲二级C字符串
(2)用puts函数输出字符串
函数原型:int puts(char * str); 调用格式:puts(str);
函数功能:将字符数组str中包含的字符串或str所指示的字 符串输出,同时将'\0'转换成换行符。 例:char ch[]="student";
puts(ch); puts("Hello"); 将字符数组中包含的字符串输出,然后再输出一个换行 符。因此,用puts()输出一行,不必另加换行符'\n'。 函数puts每次只能输出一个字符串,而printf可以输出几个 :printf("%s%s",str1,str2);
若按如下方法输入: How do you do?↙
执行语句 : scanf("%s",st) ; 则s 的内容为: How\0 使用格式字符串"%s"时会自动加上结束标志'\0'。第一个空
格后的字符没有输入st中。
第六讲二级C字符串
(2)使用函数gets()输入字符
函数原型:char *gets(char *str); 调用格式: gets(str); str是一个字符数组或指针。 函数功能:从键盘读入一个字符串到str中,并自动 在末尾加字符串结束标志符’\0’。 输入字符串时以回车结束输入,这种方式可以读入 含空格符的字符串
printf(“%c”,str[k]); /*一个一个地输出字符*/
}
输出结果为:How do you do ?How do you do ?
使用printf()函数的"%s"格式符来输出字符串,从数组的第一个字符 开始逐个输出,直到遇到第一个'\0'为止。
使用”%c”格式时,用循环实现每个元素的输出。
计算机等级考试辅导
第六讲
第六讲二级C字符串
• 第十章 字符串 • 第十一章 对函数的进一步讨论 • 第十四章 结构体、共用体和用户定义类
型
第六讲二级C字符串
第10章 字符数组与字符串
字符数组的定义与初始化 1. 字符数组的定义 字符数组:其元素类型为字符类型的数组,其 定义与前面介绍的数组定义相同。 例如:
第六讲二级C字符串
2. 字符串的输入 (1)使用scanf函数输入字符串
例:char st[15]; scanf(“%s”,st); 但:scanf(“%s”,&st);是错误的; 因为st就代表了该字符数组的首地址。 注:输入时,以回车或空格作为结束标志; 即:用scanf输入的字符串中不能含有空格。
char ch[]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’}; ③如果花括弧内提供的初值个数大于数组长度?
出错
第六讲二级C字符串
字符串的概念及存储
1.字符串的概念
字符串: 若干有效字符的序列; 可包含转义字符、ASCⅡ码表中的字符;
形式为: 用双引号括起来的字符序列; 例:"I am a student." , "Hello " "a[5]="; "%f\n"。
输出结果:
st=I am a boy!mb
第六讲二级C字符串
例: 字符串输出示例
#include<sstr[20]={”How do you do ?”};
int k;
printf(“%s”,str);
/*输出str中的字符串*/
for (k=0;str[k]!=’\0’;k++)
第六讲二级C字符串
字符串的输入输出
1.字符串的输出方法
(1)用printf函数
用printf输出字符串时,要用格式符“%s”,输出时 从数组的第一个字符开始逐个字符输出,直到遇
到第一个‘\0’为止。
例: char st[15]=“I am a boy!”
printf(“st=%s,%c,%c”,st,st[3],st[7]);
char str[40]; 定义一个有40个元素的字符数组,每个元素 相当于一个字符变量。 字符型与整形是通用的.
第六讲二级C字符串
2. 字符数组的初始化
方法:将字符常量以逗号分隔写在花括号中 ①在定义字符数组时进行初始化
char ch[7]={‘s’,’t’,’u’,’d’,’e’,’n’,’t’}; ②在对全部元素指定初值时,可省写数组长度。
几点说明: (1)字符串结束标志'\0'仅用于判断字符串是否结束,输出字符串时不 会输出。 (2)在对有确定大小的字符数组用字符串初始化时,数组长度应大于 字符串长度。如: char s[7]={"student"};是错误的. (3)在初始化一个一维字符数组时,可以省略花括号。如: char s[8]="student"; ( 4 )不能直接将字符串赋值给字符数组名。下面的操作是错误的。 s=”student”;
如: char s[14]; gets(s);
若输入的字符串为: How do you do?↙ 则s 的内容为: How do you do?\0
第六讲二级C字符串
例:字符串输入输出示例
#include<stdio.h> main() {char s[20],s1[20]; scanf(“%s”,s); printf(“%s\n”,s); scanf(“%s%s”,s,s1); printf(“s=%s,s1=%s”,s,s1); puts(“\n”); gets(s); puts(s); }