C和指针 第九章 字符串 字符 字节
C语言中没有字符串类型,字符串是以NUL结尾的字符数组组成的。
高级字符串查找:
//计算字符串起始部分,有多少字符是在group中
size_t strspn(char const * str, char const *group);
//不在group中
size_t strcspn(char const * str, char const *group);
示例:
#include <stdio.h>
#include <string.h> int main()
{
char str[] = "abababcccccccccccc";
printf("%lu\n", strspn(str, "ab"));
printf("%lu\n", strcspn(str, "b")); return 0;
}
输出6 和 1
//sep
char * strpok(char * str, char const *sep);
示例:
#include <stdio.h>
#include <string.h> int main()
{
char str1[] = {"yangyangyangyangyangyangyang"};
char str2[strlen(str1)];
strcpy(str2, str1);
char *token;
char sep[2] = "g"; for(token = strtok(str2, sep); token != NULL; token = strtok(NULL, sep)){
printf("%s ", token);
}
printf("\n");
printf("str1 %s\n", str1);
printf("str2 %s\n", str2); return 0;
}
strtok的第一个参数不是NULL,函数将查找到字符串中的第一个标记。strtok同时保存它在字符串中的位置,如果第一个参数是NULL,函数就在同一个字符串中保存的位置开始像前面一样查找下一个标记,如果没有更多标记返回NULL,否则返回字符串指针。strtok会修改字符串。

内存操作函数:
由于字符串是\0字符结尾的,如果字符串内有NUL那么就需要使用内存操作函数。
//从src开始的位置拷贝length个字节到dst内存起始位置
void *memcpy(void *dst, void const *src, size_t length); //memmove和memcpy差不多,源和目的地可以重叠,memmove先把源拷贝到临时位置,然后再拷贝回来
void *memmove(void *dst, void const *src, size_t length); //memcmp,和memchr分别是比较和查找
void *memcmp(void *dst, void const *src, size_t length);
void *memchr(void *dst, void const *src, size_t length); //memset将从src开始的length个字符设置成ch
void *memset(void *src, int ch, size_t length);
函数中参数类型都是void *,任何类型都可以转换成void *.
#include <stdio.h>
#include <string.h> int main()
{
char str[100];
memset(str, 'a', 99);
str[100] = '\0';
printf("%s\n", str); return 0;
}
运行结果:

C和指针 第九章 字符串 字符 字节的更多相关文章
- 《汇编语言 基于x86处理器》第九章字符串与数组部分的代码
▶ 书中第九章的程序,主要讲了字符串相关的输入.输出,以及冒泡排序.二分搜索 ● 代码,Irvine32 中的字符串库函数代码范例 INCLUDE Irvine32.inc .data str1 BY ...
- C和指针 第九章 习题
9.15 编写函数格式化金钱为标准字符串 #include <stdio.h> #include <string.h> #define TEMP_LEN 1000 void d ...
- C和指针 第一章 字符串处理程序
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_COL 20 #def ...
- 【读书笔记】C#高级编程 第九章 字符串和正则表达式
(一)System.String类 System.String是一个类,专门用于存储字符串,允许对字符串进行许多操作.C#提供了关键字string和相关的语法,以便使用这个类更轻松. 例子: 使用运算 ...
- 《C与指针》第九章练习
本章问题 1.C语言缺少显示的字符串数据类型,这是一个优点还是一个缺点? answer: (这个问题存在争论(尽管我有一个结论))目前这个方法的优点是字符数组的效率和访问的灵活性,它的缺点是有可能引起 ...
- C#返回字符串的字节长度,一个中文算两个字符的代码
如下代码段是关于C#返回字符串的字节长度,一个中文算两个字符的代码. public static int GetLength(string str) { if (str.Length == 0) re ...
- golang中字符串-字节切片,字符串-字符切片的互转
package main import ( "fmt" "reflect" ) func B2S(bs []uint8) string { // 将字节切片转换 ...
- c# 判断字符是否是全角, 获取字符串的字节数 , 获取字符串指定长度字节数的字符串
1 Encoding.Default.GetByteCount(checkString); =2 全角 =1 半角 /// <summary> /// 获取字符串的字节长度 /// &l ...
- perl5 第九章 关联数组/哈希表
第九章 关联数组/哈希表 by flamephoenix 一.数组变量的限制二.定义三.访问关联数组的元素四.增加元素五.创建关联数组六.从数组变量复制到关联数组七.元素的增删八.列出数组的索引和值九 ...
随机推荐
- 基于移动端Reactive Native轮播组件的应用与开发详解
总结下这段时间学习reactive native的一些东西,我们来认识一下,被炒得这么火的rn,究竟是个什么东西,以及如何去搭建自己的demo. reactive native是什么 由facebo ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7687 Solved: 3516[Subm ...
- java集合中List与set的区别
java集合中List与set的区别. List可以存储元素为有序性并且元素可以相同. set存储元素为无序性并且元素不可以相同. 下面贴几段代码感受一下: ArrayL ...
- 第3章 Linux常用命令(1)_文件处理命令
1. 文件处理命令 1.1 命令格式:命令 [-option] [arguments],如ls –la /etc (1)个别命令使用不遵循此格式 (2)当有多个选项时,可以写在一起,如以上的-la ( ...
- 深入理解Java:内部类
什么是内部类? 内部类是指在一个外部类的内部再定义一个类.内部类作为外部类的一个成员,并且依附于外部类而存在的.内部类可为静态,可用protected和private修饰(而外部类只能使用public ...
- Promiscuous Mode
简介 Monitor mode 与 promiscuous mode 比较 这是在网卡上的的两个特殊的模式,简而言之,都是将网卡的过滤器关闭. Monitor mode 这是我们常常提到的snif ...
- Spring Boot 添加Shiro支持
前言: Shiro是一个权限.会话管理的开源Java安全框架:Spring Boot集成Shiro后可以方便的使用Session: 工程概述: (工程结构图) 一.建立Spring Boot工程 参照 ...
- 如何对多个属性进行transform
w3school对transform的介绍很简单 transform: none|transform-functions; transform的默认值是none 其所举的例子也只是对一个值进行过渡,其 ...
- Java异常处理和设计
在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻 ...
- mysql select
select 查询: 赋值:赋值不能应用在where中,因为where操作的是磁盘上的文件,可以应用在having筛选中. 例:select (market_price-shop_price) as ...