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和指针 第九章 字符串 字符 字节的更多相关文章

  1. 《汇编语言 基于x86处理器》第九章字符串与数组部分的代码

    ▶ 书中第九章的程序,主要讲了字符串相关的输入.输出,以及冒泡排序.二分搜索 ● 代码,Irvine32 中的字符串库函数代码范例 INCLUDE Irvine32.inc .data str1 BY ...

  2. C和指针 第九章 习题

    9.15 编写函数格式化金钱为标准字符串 #include <stdio.h> #include <string.h> #define TEMP_LEN 1000 void d ...

  3. C和指针 第一章 字符串处理程序

    #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_COL 20 #def ...

  4. 【读书笔记】C#高级编程 第九章 字符串和正则表达式

    (一)System.String类 System.String是一个类,专门用于存储字符串,允许对字符串进行许多操作.C#提供了关键字string和相关的语法,以便使用这个类更轻松. 例子: 使用运算 ...

  5. 《C与指针》第九章练习

    本章问题 1.C语言缺少显示的字符串数据类型,这是一个优点还是一个缺点? answer: (这个问题存在争论(尽管我有一个结论))目前这个方法的优点是字符数组的效率和访问的灵活性,它的缺点是有可能引起 ...

  6. C#返回字符串的字节长度,一个中文算两个字符的代码

    如下代码段是关于C#返回字符串的字节长度,一个中文算两个字符的代码. public static int GetLength(string str) { if (str.Length == 0) re ...

  7. golang中字符串-字节切片,字符串-字符切片的互转

    package main import ( "fmt" "reflect" ) func B2S(bs []uint8) string { // 将字节切片转换 ...

  8. c# 判断字符是否是全角, 获取字符串的字节数 , 获取字符串指定长度字节数的字符串

    1 Encoding.Default.GetByteCount(checkString);  =2 全角 =1 半角 /// <summary> /// 获取字符串的字节长度 /// &l ...

  9. perl5 第九章 关联数组/哈希表

    第九章 关联数组/哈希表 by flamephoenix 一.数组变量的限制二.定义三.访问关联数组的元素四.增加元素五.创建关联数组六.从数组变量复制到关联数组七.元素的增删八.列出数组的索引和值九 ...

随机推荐

  1. RS-232, RS-422, RS-485 Serial Communication General Concepts(转载)

    前面转载的几篇文章重点介绍了UART及RS-232.在工控领域除了RS-232以外,常用的串行通信还有RS-485.本文转载的文章重点介绍了RS-232.RS-422和RS-485. Overview ...

  2. Warning: file_put_contents(data.txt): failed to open stream: Permission denied in /Library/WebServer/Documents/test.php on line 22

    最近在学习PHP 在保存文件的时候报Warning: file_put_contents(data.txt): failed to open stream: Permission denied in ...

  3. linux vi基本操作

    在Linux下,可以键入vimtutor命令,有一个包含实操的vim教程. 1.VI的三种命令模式  1)Command(命令)模式,用于输入命令:  2)Insert(插入)模式,用于插入文本:  ...

  4. java并发编程学习:用 Semaphore (信号量)控制并发资源

    并发编程这方面以前关注得比较少,恶补一下,推荐一个好的网站:并发编程网 - ifeve.com,上面全是各种大牛原创或编译的并发编程文章. 今天先来学习Semaphore(信号量),字面上看,根本不知 ...

  5. 使用Unity Container

    Lab1.使用Unity Container Unity Container最主要的两个方法就是RegisterType和Resolve了,RegisterType用于注册类型的映射,而Resolve ...

  6. Mac Pro 下使用svn

    Mac 默认都会安装有svn 1.在项目下使用命令启动svn服务---svnserve -d -r 输入下列指令:svnserve -d -r /Users/apple/svn 或者输入:svnser ...

  7. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  8. JavaScript禁用回退

    javascript:window.history.forward(1); 比如:当前在B页面,点击后退会回退到A页面,那么该代码写在A页面,然后在B页面就不会回退到A了.

  9. 利用python合并两个文件

    1格式如下 在做利用zabbix的api来批量添加主机的时候,需要处理ip和hostname,在借用别人写的py程序的基础上,自己有改装了以下脚本,为自己使用.需要时ip和hostname为一个统一格 ...

  10. Bzoj3144 [Hnoi2013]切糕

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1494  Solved: 818 Description Input 第一行是三个正整数P,Q,R,表 ...