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 一.数组变量的限制二.定义三.访问关联数组的元素四.增加元素五.创建关联数组六.从数组变量复制到关联数组七.元素的增删八.列出数组的索引和值九 ...
随机推荐
- sicily 中缀表达式转后缀表达式
题目描述 将中缀表达式(infix expression)转换为后缀表达式(postfix expression).假设中缀表达式中的操作数均以单个英文字母表示,且其中只包含左括号'(',右括号‘)’ ...
- python中的常用方法
1.os模块的常用方法: >>> import os >>> >>> myFiles = ['accounts.txt', 'details.cs ...
- iOS关于XML解析请求数据
XML数据的请求: 和json请求几乎一样,只有请求参数修改为xml即可: AFHTTPSessionManager *manager = [AFHTTPSessionManager manager] ...
- Nginx Rewrite规则
location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配 ...
- 部署 OpenStack VirtualBox
VirtualBox 中部署 OpenStack 大家新年好,CloudMan 今天给大家带来一件新年礼物. 一直以来大家都反馈 OpenStack 学习有两大障碍:1. 实验环境难搭2. 体系复杂, ...
- webapi相关知识
1.从uri中获取参数 :后端:[FromUri] 2.从uri中获取数组参数:后端:[FromUri]string[] type 前端:type[]=1&type[]=2&type ...
- 如何动态在文档中加入<script></script>写入大段js
<script language="javascript"> var script = document.createElement("script" ...
- 【swift学习笔记】一.页面转跳的条件判断和传值
在转跳页面之前我们可能会判断一下是否有输入正确的数据,如下图所示,如果没有数据输入则弹出提示,不进行转跳. 一:页面转跳 1.第一个页面的上放上一个Label一个textfield和一个按钮 2.在第 ...
- 【51Nod 1622】【算法马拉松 19C】集合对
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1622 简单题..直接暴力快速幂 #include<cstdio&g ...
- Javascript和HTML:
JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标 ...