前言 字符串在C语言里使用非常多,因为很多数据处理都是文本,也就是字符串,特别是设备交互、web网页交互返回的几乎都是文本数据。...字符串的定义 char buff[]="我是一个字符串"; char a[]="1234567890"; char b[]="abc"; char c[]={'a','b','c','\0'}; 在普通的字符数组结尾加一个...处理字符串里字母大小写 将字符串里所有大写字母全部换成小写字母。或者小写字母全部换成大写字母。可以通过形参进行区分。...字符串删除 从键盘上录入一个字符串,删除字符串里指定的单词,输出结果。...字符串插入 从键盘上录入一个字符串,从指定位置插入一个字符串,再输出结果。 比如:原字符串“1234567890” (1). 从指定位置插入新的单词。 比如 从第2个下标插入一个“ABC”字符串。
在 C 语言中,字符串是以字符数组的形式表示的,以空字符 '\0' 结尾。C 语言提供了一系列的字符串处理函数,可以用于字符串的操作、查找、比较等。以下是一些常用的 C 语言字符串处理函数: 1....Hello"; char str2[] = {'W', 'o', 'r', 'l', 'd', '\0'}; // 字符串常量 char *str3 = "C Programming...字符串分割 C 语言本身不提供直接的字符串分割函数,但可以使用 strtok 函数来实现字符串分割。...C 语言编程中,字符串处理是非常常见的任务之一。...除了上述介绍的函数外,还有许多其他字符串处理函数,开发者可以根据具体需求选择合适的函数进行使用。
,字符串字面量) 如何存储字符串字面量 从本质上而言,C语言把字符串字面量作为字符数组来处理。...当C语言编译器在程序中遇到长度为n的字符串字面量时,它会为字符串字面量分配长度为n+1的内存空间,在末尾增加一个额外的字符——空字符(\0)。...字符串字面量的操作 通常情况下可以在任何C语言允许使用 char * 指针的地方使用字符串字面量。...•字符串变量 一些编程语言为声明字符串提供了特殊的 string 类型。C语言采取了不同的方式:只要保证字符串是以空字符串结尾的,任何一维的字符数组都可以用来存储字符串。...14";date2: | J | u | n | e | | 1 | 4 | \0 | \0 | 大体上来说,这种行为与C语言处理数组初始化的方法一致。
strlen函数:求字符串的长度 size_t strlen(const char *s) 头文件:#include 说明:求出s指向的字符串的长度(不包括null字符)。...返回值:返回s指向的字符串的长度。...若s1和s2指向的内存空间重叠,则作未定义处理。 返回值:返回s1的值。...若s1和s2指向的内存空间重叠,则作未定义处理。 返回值:返回s1的值。...strcmp和strncmp函数:比较字符串的大小关系 atoi、atol和atof函数:转换字符串
【1】需求 需求:有一个 “00:01:33.90” 这样格式的时间字符串,需要将这个字符串的时间值提取打印出来(提取时、分、秒、毫秒)。 这个时间字符串从哪里来的?...C:\Users\11266>ffmpeg -i D:/123.mp4 ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers...,这个时间字符串就是当前视频的总时间。...下面是时间字符串提取代码,C语言代码: char TotalTime[100]; //解析数据 char *p = strstr(utf8_str.data(), "Duration:"); if (...【2】C语言实现 #include #include #include void extractTime(const char* time_str
预定义符号 C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预处理期间处理的。...当预处理器搜索#define定义的符号的时候,字符串常量的内容并不被搜索。 6. 宏函数的对比 宏通常被应用于执行简单的运算。 比如在两个数中找出较大的一个时,写成下面的宏,更有优势一些。...#和## 7.1 #运算符 #运算符将宏的⼀个参数转换为字符串字面量。它仅允许出现在带参数的宏的替换列表中。 #运算符所执行的操作可以理解为”字符串化“。...所以语言本身没法帮我们区分二者。 那我们平时的一个习惯是: 把宏名全部大写 函数名不要全部大写 9. #undef 这条指令用于移除⼀个宏定义。...test.h包含5次,那么test.h文件的内容将会被拷贝5份在test.c中。
ANSI C,其值为1,否则未定义 以上是C语言设置的一些预定义符号,是可以直接使用的,预定义符号在预处理阶段处理 二、#define定义常量 基本语法: #define name stuff 例子:...,也就是再次扫描然后重复上述过程 4、宏参数和#define定义中可以出现其他#define定义的符号,但是宏是不能够递归的 5、在字符串中的#define定义的符号不能被替换 六、宏与函数的对比...,它仅允许出现在带参数的宏的替换列表中 简单来说它的功能就是字符串化 例子: 当我们想打印出来一个数字的大小:the value of number is 6 我们可以这样做: #define...) { int number = 6; PRINT(number); return 0; } 它在使用时,#n就是#number,#number就是转换成"number",这时字符串内的代码就会被预处理为...c语言给我们很多预处理指令,我们工作的过程中可能会用到,大家自行查找学习 今日分享就到这里了~
C语言_预处理 文章目录 C语言_预处理 0.引言 1.#include 2.#define (符号常量) 3....#error和#pragma预处理命令 6.#和##运算符 0.引言 C的预处理是在程序被编译之前执行的,包括将其他文件包含进正在编译的文件,定义符号常量和宏,条件编译和有条件的执行预处理命令。...#define(宏) 宏 ,是#define预处理命令定义的一种标识符,宏的定义可以带实参,也可以不带。...#error和#pragma预处理命令 格式:#error tokens 功能:打印出包含命令中指定标记的信息,具体内容和系统的实现有关。 ...#和##运算符 #:#运算符需用在带实参的宏中,其操作数就是宏的实参,它将替换文本中的标记转换成一个用引号引起来的字符串。
那举个列子来看一下: int main() { char arr[] = "abcdef"; //a b c d e f \0 size_t len = strlen(arr); printf("...第一次1+my_strlen(“bc”); 第二次1+1+my_strlen(“c”); 第三次1+1+1+my_strlen(“”); 第四次就进不去,返回了0,最后1+1+1+0 = 3。...有三种情况,像上图那种,字符串2中q比字符串1中c大,返回的就是一个小于0的数字。 第二种,字符串2比字符串小,返回的就是一个大于0的数字。 第三种,字符串2和字符串相等,返回的就是0。...4个字节,发现q比c的字典序大,返回一个小于0的数 8. strstr的使用和模拟实现 8.1 strstr的使用 这个函数是用来干什么的呢?...} 结果显然与分析的一致 10. strerror函数的使用 要学习strerror函数,就得先了解errno: 当库函数调用失败的时候,会讲错误码记录到errno这个变量中 errno是一个C语言的全局变量
一、介绍 本文将主要介绍字符串处理库函数中的strlen、strcpy、strcat、strcmp、atoi等,主要由头文件提供。...若s1和s2指向的内存空间重叠,则作未定义处理。 返回值 返回s1的值。...结果值不能用int型表示时的处理未定义。...结果值不能用long型表示时的处理未定义。...结果值不能用double型表示时的处理未定义。
引入 详见CPrimerPlus P329 分析常用的处理字符串输入和输出的函数,以及如何结合这几个函数进行优化和设计一些新的处理字符串输入输出的函数。...char name[80]; 2.使用C语言的库函数来分配内存。...使用 gets函数读取整行输入,直到遇到换行符,然后丢弃换行符(与fgets函数区分),存储其他的字符,并在这些字符后面加上一个空字符使其成为一个C字符串。...因此C11委员会在标准中废除了gets()函数。 gets()函数的替代品 过去常使用fgets函数来代替gets函数,在输入处理方面与gets函数略有不同。...\n这一特性处理超过了规定的数组限制的输入情况,并且输出完整的字符串。
指针字符串的正确表达: char a[] = "hello"; //ok char *b="hello"; //ok char c[10];c[10]="hello"; //error...char c[10];c="hello"; //error char *d;d="hello"; //ok char e[]={"hello"}; //ok char...指针字符串: char *b="hello"; b是变量,实际上把字符串的第一个字符的内存地址赋值给指针变量b。 注意: 使用字符数组定义字符串,字符串为字符串变量。...使用字符指针定义字符串,字符串为常量。...例题:将字符串复制到字符串b,输出字符串b #include int main(){ char a[]="hello"; //int *a="hello" char
例69:C语言编写一个程序,将字符数组str2中的全部字符复制到字符数组str1中,要求不使用strcpy函数。 解析:复制时「\0」也要复制过去,「\0」后面的字符不复制 。...[80];//定义字符数组 int i;//定义整型变量 printf("输入要复制的字符串:");//提示语句 scanf("%s",str2);//输入字符串 for(i=0... return 0;//主函数返回值为0 } 编译运行结果如下: 输入要复制的字符串:love 复制后的字符串是:love -------------------------------- Process...以上,如果你看了觉得对你有所帮助,就给小林点个赞,分享给身边的人叭,这样小林也有更新下去的动力,跪谢各位父老乡亲啦~ C语言 | 将s2中的字符复制到s1中,不用strcpy 更多案例可以go公众号:C...语言入门到精通
strtok 定义:char *strtok(char s[], const char *delim); s为要分解的字符串 delim为分隔符字符串 当strtok()在参数s的字符串中发现参数delim...return 0; } void printArr(char *s, int n) { for (int i = 0; i < n; i++) { printf("[%c#...%-3d] ", s[i], s[i]); } } 结果: [a#97 ] [b#98 ] [c#99 ] [ #32 ] [d#100] [e#101] [d#100] [e#101] [...[j#106] [k#107] [l#108] [ #0 ] [ #0 ] abc |abc f g|abc hi |abc jkl|abc [a#97 ] [b#98 ] [c#99...如果未找到分割的字符串,则范围当前字符串的指针 所有出现分割字符串的地方都会被过滤, 如上面代码 dede strtok会破坏被分解的字符串,调用前后不一致。
字符串是一种非常重要的数据类型,但是C语言不存在显式的字符串类型,C语言中的字符串都以字符串常量的形式出现或存储在字符数组中。...同时,C 语言提供了一系列库函数来对操作字符串,这些库函数都包含在头文件 string.h 中。...一、字符串常量和字符数组 1.1、什么是字符串常量 C 语言虽然没有字符串类型,但是 C语言提是存在字符串这个概念的,也就是字符串常量:以 NUL 字节结尾的 0 个或多个字符组成的序列。...因此,在 C 语言中是不能直接进行字符串赋值的(因为没有字符串类型嘛)。...五、字符串比较 C 语言中使用库函数 strcmp 来进行字符串比较。
✨作者:@平凡的人1 ✨专栏:《C语言从0到1》 ✨一句话:凡是过往,皆为序章 ✨说明: 过去无可挽回, 未来可以改变 ---- 前面我们学习了4个函数——strlen\strcpy\strcat...拷贝num个字符从源字符串到目标空间。 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。...s\n", strerror(3)); printf("%s\n", strerror(4)); printf("%s\n", strerror(5)); } 这些并不需要我们记住,error-C语言设置的一个全局的错误码存放的变量...\n"; char c; while (str[i]) { c = str[i]; if (isupper(c)) c =...tolower(c); putchar(c); i++; } return 0; } ----
http://c.biancheng.net 除了字符数组,C语言还支持另外一种表示字符串的方法,就是直接使用一个指针指向字符串,例如: char *str = "http://c.biancheng.net..."; 或者: char *str; str = "http://c.biancheng.net"; 字符串中的所有字符在内存中是连续排列的,str 指向的是字符串的第 0 个字符;我们通常将第 0 个字符的地址称为字符串的首地址...下面的例子演示了如何输出这种字符串: #include #include int main(){ char *str = "http://c.biancheng.net...关于全局数据区、栈区、常量区以及其他的内存分区,我们将在《C语言内存精讲》专题中详细讲解,相信你必将有所顿悟,从根本上理解C语言。...最后我们来总结一下,C语言有两种表示字符串的方法,一种是字符数组,另一种是字符串常量,它们在内存中的存储位置不同,使得字符数组可以读取和修改,而字符串常量只能读取不能修改。
C语言字符串常量 一.字符串常量的声明 char *p = "hello";//指针直接往上戳 一个字符串常量为什么会给一个指针赋值? ...字符串常量是一个表达式,既然使表达式就会有值,字符串常量的值是该字符串第一个字母的首地址 同一个字符串常量,它们的值(地址)相同 #include ...,输出的结果却一样,这就说明多次使用同样内容的字符串常量,在内存中,都只保存一次该字符串常量。..."hello" + 1); printf( "%c\..."hello" + 1)); printf( "%c\
C语言 字符串分割 一、简述 记–字符串分割,strtok()函数的使用例子、自己简单实现split()函数。...二、例子代码 #include #include /* * 函数:split * 描述:按指定分隔符分割字符串 * 参数: * str:要分割的字符串...* strLen:要分割的字符串的长度 * splitChar:分隔符 * index:获取第几部分, 1<=index * result:结果字符串, result = str[...返回值 成功:非空指针,分割后的结果字符串 失败:NULL,分割后没有得到有效的字符串 备注 第一次调用strtok()时,要解析的字符串应在str中指定。...在每个随后的应解析相同字符串的调用中,str必须置空。
领取专属 10元无门槛券
手把手带您无忧上云