C语言入门17 字符串处理函数

编程入门 行业动态 更新时间:2024-10-24 02:26:44

C语言入门17 <a href=https://www.elefans.com/category/jswz/34/1771434.html style=字符串处理函数"/>

C语言入门17 字符串处理函数

一、strlen:统计字符串长度

不会统计字符串中结束符 \0 。

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{char str1[20] = "hello";char* str2 = "hello";printf("strlen(str1) = %d\n", strlen(str1));//5printf("strlen(str2) = %d\n", strlen(str2));//5return 0;
}

二、strcpy:拷贝字符串

在使用此函数时,必须保证dest(目标字符串)指向的空间足够大,不然会出现内存污染。所谓内存污染,就是当dest内存不够时,不会停止拷贝,而是会继续拷贝下去,将原本不属于dest的内存也进行了操作,这就是内存污染。这也是微软的VS为啥不让我们使用strcpy的原因(使用#pragma warning(disable:4996)可以继续使用)。\0也会被拷贝

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{char str[100] = "aaaaaaaaaa";strcpy(str, "hello");	printf("str = %s\n", str);//hello,不继续输出证明了\0也会被拷贝printf("str+6 = %s\n", str+6);//aaaa, 证明后面的字符不会发生变化return 0;
}

三、strncpy:拷贝字符串

拷贝前n个字节,并且不拷贝\0

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{char str[100] = "aaaaaaaaaa";strncpy(str, "hello",3);	printf("str = %s\n", str);//helaaaaaaareturn 0;
}

四、strcat:字符串追加

同样必须保证目标字符串的空间足够大,否则内存污染。会追加\0

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{char str[100] = "abcdefgh";char* src = "hello";strcat(str, "hello");	printf("str = %s\n", str);//abcdefghhelloreturn 0;
}

五、strncat:字符串追加

追加src的前n个字符到目标字符串后面。会追加\0

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{char str[100] = "abcdefgh";char* src = "hello";strncat(str, "hello",3);	printf("str = %s\n", str);//abcdefghhelreturn 0;
}

六、strcmp:比较字符串大小

比较方法:从第0个元素开始,逐个字符比较ASCII码,一旦比较出大小就返回。如果所有都一样,就返回0。如果s1>s2返回1,小于则返回-1。

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{char* str1 = "hello";char* str2 = "world";char* str3 = "hello";printf("strcmp(str1,str2) = %d\n", strcmp(str1, str2));//-1printf("strcmp(str1,str3) = %d\n", strcmp(str1, str3));//0printf("strcmp(str2,str3) = %d\n", strcmp(str2, str3));//1return 0;
}

七、strncmp:比较字符串大小

相比strcmp,多个参数,只比较前n个字符,比较方式一致。

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{char* str1 = "hello world";char* str2 = "hello abcdr";printf("strncmp(str1,str2) = %d\n", strncmp(str1, str2, 6));//0printf("strncmp(str2,str3) = %d\n", strncmp(str1, str2, 7));//1return 0;
}

八、strchr:字符查找函数

注意:是首次匹配,如果有多个,只返回第一个。找到就返回字符的地址,找不到返回NULL

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{char* str = "hello world";printf("strchr(str, 'g') = %x\n", strchr(str, 'g'));//0printf("strchr(str, 'g') = %x\n", strchr(str, 'w'));//87b36printf("w的地址 = %x\n", str + 6);//87b36return 0;
}

九、strrchr:字符查找函数

同strchr相比,找出最后出现的字符(末次匹配)

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{char* str = "hello worldw";printf("strrchr(str, 'g') = %x\n", strrchr(str, 'w'));//937be7printf("w的地址 = %x\n", str + 11);//937be7return 0;
}

十、strstr:字符串匹配函数

也是首次匹配,找到了就返回匹配到字符串的首字符地址,否则返回NULL

#include<stdio.h>
#include "helloworld.h"
#pragma warning(disable:4996)
int main()
{char* str = "sfewfgesghg&*&%&^dadw ";printf("strstr(str,""fge"") = %p\n", strstr(str, "fge"));//首地址printf("strstr(str,""acd"") = %p\n", strstr(str, "acd"));//0return 0;
}

十一、menset:空间设定函数

void* menset(void* ptr, int value, size_t num);将ptr指向的内存空间的num个字节全部赋值为value。超出范围会造成内存污染。

#include<stdio.h>
#pragma warning(disable:4996)
int main()
{char str[12] = "hello world";printf("%s\n", str);//hello worldmemset(str, 'a', 5);printf("%s\n", str);//aaaaa worldreturn 0;
}

更多推荐

C语言入门17 字符串处理函数

本文发布于:2024-03-06 14:52:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1715599.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   函数   入门   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!