- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机二级C语言 字符串
第十章 字符串
1.存放字符串
(1)用一维字符数组存放字符串
①C语言对字符串的约定
“abcd”
存放:借助一维字符型数组存放
占空间: 4+1
实际长度:4
②C语言中字符串常量的约定
10
10.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+1
char 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’}; 4
char a[]={‘a’,’b’,’c’,’d’,’\0’}; 5
②直接将字符串常量给一维字符数组
“abcd” 4+1
char a[4]= “abcd”; 非法
char a[5]=”abcd”;
char a[10]=”abcd”;
char a[]=”abcd”; 常用
总结:
“abcd” 4+1
char 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;i4;i++)
scanf(“%c”,a[i]); abcd
a[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”
#includestdio.h
main()
{char a[5];
int i;
for(i=0;i4;i++)
a[i]=getchar();
a[i]=’\0’; abcd
a[0]=’a’ ‘b’ ‘c’ ‘d’ ‘\0’
for(i=0;i4;i++)
putchar(a[i]); abcd
条件
char a[]=”abcd”,*p=a;
输入项:字符数组名,字符指针变量,字符数组元素的地址。
存放的起始地址
scanf(“%s”,a); p a[1]
输出项可为:字符串常量,字符数组名,已指向字符串的字符指针变量。
输出的起始地址
printf(“%s”,”abcd”); a p
(2)用%s整串输入和输出
char a[10],*p=a; “ab
文档评论(0)