第十章 字符串

————来源《C语言程序设计》苏小红

10.1字符串字面量(string literal)

也称为字符串常量

字符串末尾添加一个'\0'作为字符串结束的标志

'\0'的ASC码值为0.

10.2字符串存储

C语言没有字符串数据类型,需要字符型数组来实现字符串存储。

是否有结束标志'\0'作为字符串结束的标志,是字符数组与字符串的区别。

初始化方法一:需要注意声明数组的长度比实际字符串长度要大1,因为必须添加字符串结束标志'\0'。

char str[6] = {'H','e','l','l','o','\0'};

初始化方法二:不必指定数组大小,编译徐彤自动在字符串末尾添加'\0'。

char str[] = {"Hello"};

char str[] = "Hello”;

二维字符数组:

数组第一维表示字符串的个数,数组第二位表示字符串的长度。

第一维可以省略,因为二维数组是按行存储。

10.3字符指针

1.字符指针指向字符串的首地址

char *ptr = "Hello";

字符串字面量"Hello"在常量存储区中,是只读的,所以可以改变ptr的指向,但是不能对ptr指向的存储单元进行读写。

2.字符指向字符数组

char str[10] = "Hello";
char *ptr = str;

此时数组名代表数组的首地址,数组名是一个地址常量不能修改。

而ptr所指向的字符串可以修改。

10.4字符串的访问和输入输出

1.访问字符串中的单个字符

(1)用字符数组下标即可访问字符串中的单个字符。

(2)用字符指针间接访问

*(ptr+i) //字符串中第i个字符

2.字符串的输入、输出

(1)按c格式符,即按字符输入、输出

for(int i=0; str[i]!='/0';i++){
    printf("%c",str[i]);
}

(2)按s格式符

char name[N];
scanf("%s",name);

注意:scanf函数读入字符遇到【空白字符】时,就结束了读入字符的操作,余下的字符依然留在输入缓冲区中。

【空白字符】包括:空格,制表符,回车。

(3)gets()可以输入带空格的字符串,即将空格和制表符都看作字符串的一部分。

注意:scanf()和gets()对于回车符的处理不同————get()将回车符作为字符串的终止符,同时将回车符从缓冲区读走;而scanf()则不读走回车符,还将回车符留在缓冲区中。

(4)fgets()限制输入字符串长度,防止缓冲区溢出。

fgets(name,sizeof(name),stdin);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值