| 第十章 字符串|
||
| 字符串的存储完全依赖于字符数组,但字符数组又不等于字符串变量;|
||
| 1、用一维字符数组存放字符串|
| |
| C 语言对字符串的约定:|
| 字符串是借助于字符型一维数组存放的,并规定以字符‘\0’作为字符串的结束标志|
| ;'\0' 作为标志占用存储空间,但不计入串的实际长度;|
||
| |
| C 语言中表示字符串常量的约定:|
| 虽然C语言中没有字符数据类型,但却允许是字符串常量,由双引号括起来的一串字符;|
||
| C 语言中字符串常量给出的是地址值:|
| 每个字符串在内存中占用一串连续的存储空间,这些连续的存储空间实际上就是|
| 字符型一维数组。不同的字符串在内存中占有不同的存储空间;也就是说,在|
| C语言中,字符串常量被隐含处理成一个以'\0' 结尾的无名字符型一维数组;|
||
| 例如:char *sp; sp = "hellow";|
| 说明:这个语句并不是把字符串的内容放到了sp中,而只是把字符串中的内存|
| 中所占的首地址赋予了char类型的指针变量sp,使指针变量sp指向该字符串;|
||
| 2、字符数组与字符串的区别:|
| 字符数组的每一个元素可存放一个字符,但它并不限定最后一个字符应该是什么,|
| 而字符串则要求最后一个必须是'\0'作为结束标示。在字符数组中可以存放|
| 字符串,但不能通过赋值语句将字符串常量或其它字符数组中的字符串直接赋给|
| 字符串数组变量;|
||
| 3、通过赋初值的方式给一维字符数组赋初值:char str[10] = {'2','3','A'};|
||
| 4、在赋值时直接赋字符串常量|
| char str[10] ={"string"}; //习惯上省略{}|
| char str[10]="string!";(这种方式会自动给字符串的末尾添加结束标识,|
| 但需要注意的是字符串数组的长度一定要比赋值的长度多一个)|
||
| (数组名是一个地址常量,地址常量时不能被改变的)|
||
| 5、给数组元素逐个赋字符值,最后加入串结束标志;|
||
| 6、使指针指向一个字符串:|
| 6.1、通过赋值的方式使指针指向一个字符串|
| char *psl = "form one"; (后面的这个字符串代表的是一个地址,首地址)|
| 意思:把存放字符串的无名存储区首地址赋给指针变量psl,(不要误以为是将字符串|
| 赋给了psl)|
||
| 6.2、通过赋值运算使指针指向一个字符串:|
| char *psl;|
| psl="form one";|
||
| 6.3、用字符数组作为字符串和用指针指向的字符串之间的区别:|
| char mak[] = "program";|
| char *pmark = "program";|
| 区别:|
| mak 代表的是一个固定的存储空间,但指针变量pmark中的地址可以改变而|
| 指向另外一个长度不同的字符串,一旦pmark指向新的字符串而没有另一个指针|
| 指向原来的字符串,则此字符串将会“丢失”,其所占的存储空间也将无法引用;|
||
| 7、字符串的输入和输出:|
| 7.1、输入和输出字符串时的必要条件|
| 当对字符串进行办出时,输出项可以是字符串常量或字符数组名,也可以是|
| 已经指向字符串的字符指针变量;|
| 当对字符串进行输入时,输入项可以是字符数组名,也可以是字符指针变量;|
||
| 7.2、用格式说明%s进行整串输入和输出|
| 7.2.1、scanf();函数|
| scanf("%s",str_adr);|
| 这里的str_adr 是地址值,它可以是字符数组名,字符数组元素的地址或|
| 字符指针变量。|
||
| 注:用%s 格式符输入字符串时,空格和回车符都作为输入数据的分隔符而不能被读入;|
| 若输入字符串的长度超过数组所能容纳的字符个数时,系统并不报错;|
| 当输入项是数组元素的地址时,输入字符将从这一元素开始依次存放在该数组中|
| 当输入项是字符指针变量时,该指针变量必须已指向确定的有足够空间的连续存储单元;|
||
| 7.2.2、print();函数中使用格式说明%s 可以实现字符串的整体输出;|
| printf("%s",str_adr);|
||
| 7.2.3、调用gets();puts();函数在终端输入或输出一行字符串|
||
| 8、字符串数组|
| :字符串数组就是数组中每个元素都是一个存放字符串的一维数组;|
||
| 8.1、字符串数组可以在定义的时候同时赋初值|
| char ch[]3[5] = {"aaa","bb","ccc"}; =={{},{},{}}|
| 或者写成:char ch[][5] = .......|
||
| 8.2、可以定义字符型数组并通过赋初值来构成一个类似的字符串数组|
| char *pa[3] = {"a","bb","ccc"};|
| 说明:指针数组pa的每个元素指向一个字符串,也就是说,数组pa的每个元素中存放着一个|
| 字符串的首地址;|
| |
| 9、用于字符串处理的函数:|
| 9.1、字符串复制函数strcpy(s1,s2);|
| 将s2的值复制到s1所指向的空间,返回s1的值,即目的的首地址;注意:为保证|
| 复制的合法性,s1必须指向向下足够 容纳s2串的存储空间;|
||
| 9.2、字符串连接函数strcat(s1,s2);|
| 该函数将s2 所指字符串的内容连接到s1所指向的字符串后面,并自动覆盖s1串末尾的|
| \0,注意:s1所指的字符串应有足够的空间容纳两种合并后的内容;|
||
| 9.3、求字符串的长度:strlen(s);|
| 求字符串s的长度,这个长度不包括串尾的结束标志0;|
||
| 9.4、字符串比较函数:strcmp(s1,s2);|
| s1>s2 === >0|
| s1==s2==== =0;|
| s1<s2==== <0|
| |
| 案例:编写函数slength(char *s),函数返回指针s所指向字符串的长度,即|
| 相当于库函数strlen的功能;|
| 要求:形参s是指向字符串首地址的指针,计算字符串的长度,只需逐个统计串中字符个数|
| 指导遇到串结束标志\0为止|
||
| |
#include<stdio.h>
int slength(char *s)
{
int n=0;
while(*(s+n)!='\0')
{
n++;
return (n);
}
}
main()
{
char str[]="ABCDEF";
int len1,len2;
len1=slength(" ");len2=slength(str);
printf("len1=%d",len1)
/*
char str[10]; int i;
for(i =0;i<9;i++)
{
scanf("%c",&str[i]); //输入值
}
str[i]='\0';
*/
}
分享到:
相关推荐
C 语言初级 函数与指针 以及结构体的介绍 C 语言初级 位运算 C 语言初级 文件操作 C 语言初级入门--地址和指针 C 语言初级入门--二维数组和指针 C 语言初级入门--概念简介 ...C 语言初级入门--字符串
### VFP简单初级入门教程知识点总结 #### 一、Visual FoxPro简介 **1.1 Visual FoxPro定义** - **关系型数据库管理系统**: Visual FoxPro(简称VFP)是一款功能强大的关系型数据库管理系统(RDBMS)。它可以用来...
首先,让我们从R语言的初级入门开始。在R语言中,数据的输入和赋值是学习的基础。你可以使用`<-`或`=`符号来为变量赋值,例如: ```r x <- 10 y = "Hello, R!" ``` 这里的`x`被赋值为整数10,`y`被赋值为字符串。R也...
内容概要:本文档提供了两道C语言习题及其详细解答回顾——素数检测与字符串反转方法的实现细节。不仅覆盖了解决特定问题的基本思路,同时介绍了有效的算法优化途径。具体习题内容有素数判断逻辑解释、高效求解素数...
字符串在C语言中被视为字符数组,通常以空字符'\0'作为结束标志。字符串处理函数,如strlen()计算字符串长度,strcpy()和strcat()用于复制和连接字符串。 五、结构体与联合体 结构体是将不同类型的数据组合在一起...
它采用完全独立于语言的文本格式,但也使用了类似于C家族语言的习惯,包括C、C++、C#、Java、JavaScript、Perl、Python等。这使得JSON成为理想的选择用于数据交换,因为它易于人阅读和编写,同时也易于机器解析和...
"程序就是C语言的入门示例,展示了如何使用`printf`输出字符串。 2. **变量与数据类型**:C语言有多种数据类型,如整型(int)、浮点型(float)、字符型(char)等,用于存储不同类型的数据。理解变量的声明、初始化和...
2. **基础知识部分**:这部分通常涵盖Go语言的基础语法,如变量、常量、数据类型(包括整型、浮点型、字符串、布尔型等)、流程控制(if、for、switch)、函数定义和调用,以及结构体和接口等面向对象概念。...
"C语言学习软件,初级必备"是一款专为初学者设计的学习工具,旨在帮助新手快速入门C语言编程。 该软件可能包含以下几个核心知识点: 1. **C语言基础**:包括数据类型(如int, char, float, double等)、变量声明、...
掌握基本数据类型(整型、浮点型、字符串、布尔值等)以及复合数据类型(列表、元组、字典、集合)。 - **流程控制**:学会使用条件语句(if-else)、循环语句(for、while)来实现程序逻辑控制。 - **函数定义与...
6. **字符串处理**:了解如何使用字符数组和库函数(如`strlen`, `strcpy`, `strcat`等)处理字符串。 7. **结构体与联合**:学习如何定义和使用复合数据类型,理解结构体和联合的区别。 8. **文件操作**:学习如何...
面向对象编程和可视化集成开发工具的发展,使很多曾经非常流行的编程语言影响下降甚至逐步消失,但有一种语言是例外,它就是C语言,时光流逝丝毫没减低C的魅力,它的风采依然如旧。 C语言已经深深的进入各种操作...
能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。 第十二讲 多维数组的指针变量 二维数组指针变量说明的一般形式为: 类型说明符 (*指针变量名)[长度] 其中...
9. **标准库函数**:如字符串处理函数(strcpy、strcat、strcmp等)、数学函数(sin、cos、sqrt等)、输入/输出函数(scanf、printf等)。 在"第1章"中,通常会介绍C语言的基础知识,如变量、数据类型、运算符、...
最后,为了顺利通过计算机二级考试,你需要熟悉C语言的标准库,如数学函数()、字符串处理()、内存管理(<malloc.h>/)等。 总的来说,"C语言初级教程 讲座"涵盖了C语言的基础知识和核心概念,适合初学者入门。...
8. **数组和字符串**: 数组是一系列相同类型的数据集合,字符串是字符数组的特殊形式。学习者需要掌握数组的声明、初始化和遍历,以及字符串处理的基本操作。 9. **文件操作**: 学习者可能还会接触到如何读写文件,...
此外,还有引用类型,如字符串(string)和类(class)。 三、变量与常量 在C#中,声明变量时需要指定其数据类型,变量用于存储数据。常量则是在程序运行过程中不可改变的值,可以用const关键字声明。 四、运算符...
C语言是一种广泛应用于系统编程、...总的来说,“C初级教程学习”涵盖了C语言的基础知识,适合初学者入门。通过深入学习并实践这些知识点,可以建立起扎实的编程基础,为进一步深入学习高级编程技术打下坚实的基础。