字符串处理函数(笔记)

it2025-02-17  26

memchr -- 在内存空间中搜索一个字符 memcmp -- 比较内存空间 memcpy -- 拷贝内存空间 memmove -- 拷贝内存空间 memset -- 使用一个常量字节填充内存空间 strcat -- 连接字符串 strcmp -- 比较字符串 strcpy -- 拷贝字符串 strlen -- 获取字符串的长度 strncat -- 连接字符串(受限) strncmp -- 比较字符串(受限) strncpy -- 拷贝字符串(受限)

1. memchr

#include<stdio.h> #include<string.h> //void *memchr(const void *s, int c, size_t n); int main() { char str="Hello World!"; char *pstr=0; pstr=(char*)memchr(str,'W',100); if(ptr!=0) printf("找到字符W")else printf("没找到字符W"); return 0; }

2. memcmp

#include<stdio.h> #include <string.h> //int memcmp(const void *s1, const void *s2, size_t n); int main() { char str1[10] = "tql"; char str2[10] = "tql"; if (memcmp(str1, str2, 10) == 0) printf("两个内存空间完全一致!\n"); else printf("两个内存空间不一致!\n"); return 0; } /*备注 返回值<0:字符串 1 的字符小于字符串 2 对应位置的字符返回值 返回值=0:两个字符串的内容完全一致 返回值>0:字符串 1 的字符大于字符串 2 对应位置的字符

3. memcpy

没看懂 下一个

4. memmove

同上

5.memset

用于初始化 例如 memset(c,0,sizeof(c);

tips:

mem 开头的主要是用于针对内存空间处理,不过由于内存空间的单位也是字节(跟字符串一 样),所以看着两个函数是一样的(事实上返回值就不一样了,一个是返回 char *,一个是 返回 void *)。不过在一定的条件下,mem 打头的效率要高一些。 //也许吧 反正我看不懂

6.strcat

#include <stdio.h> #include <string.h> //char *strncat(char *dest, const char *src); int main() { char str1[100] = "Hello"; char str2[] = "World!"; printf("str1: %s\n", str1); strcat(str1, " "); printf("str1: %s\n", str1); strcat(str1, str2); printf("str1: %s\n", str1); return 0; //这个简单 T_T }

7. strcmp

#include <stdio.h> #include <string.h> //int strcmp(const char *s1, const char *s2); int main() { char str1[10] = "FishC.com"; char str2[20] = "FishC.com"; if (!strcmp(str1, str2)) printf("两个字符串完全一致!\n"); else printf("两个字符串不同!\n"); return 0; } /*返回值<0:字符串 1 的字符小于字符串 2 对应位置的字符返回值 返回值=0:两个字符串的内容完全一致 返回值>0:字符串 1 的字符大于字符串 2 对应位置的字符

8. strcpy

#include <stdio.h> #include <string.h> //char *strcpy(char *dest, const char *src); int main() { char str1[] = "Original String"; char str2[] = "New String"; char str3[100]; strcpy(str1, str2); strcpy(str3, "Copy Successful"); printf("str1: %s\n", str1); printf("str2: %s\n", str2); printf("str3: %s\n", str3); return 0; }

9.strlen

懂得都懂

10.strncat

#include <stdio.h> #include <string.h> //char *strncat(char *dest, const char *src, size_t n); int main() { char str1[20] = "Hello"; char str2[20] = "World"; strncat(str1, " ", 2); strncat(str1, str2, 10); printf("str1: %s\n", str1); return 0; }

11. strncmp

#include <stdio.h> #include <string.h> //int strncmp(const char *s1, const char *s2, size_t n); int main() { char str1[40] = "FishC"; char str2[40] = "FishC.com"; if (!strncmp(str1, str2, 5)) printf("str1和str2前5个字符相同!\n"); else printf("str1和str2前5个字符不同!\n"); return 0; }

12. strncpy

#include <stdio.h> #include <string.h> //char *strncpy(char *dest, const char *src, size_t n); int main() { char str1[] = "To be or not to be"; char str2[]; char str3[]; strncpy(str2, str1, sizeof(str2)); strncpy(str3, str2, 5); str3[5] = '\0'; printf("%s\n", str1); printf("%s\n", str2); printf("%s\n", str3); return 0; }
最新回复(0)