字符串函数
1.memset
#include <stdio.h> #include <string.h> int main() { //char *s="My Dream Come true";//用来初始化字符指针的字符串常量会被编译器安排到只读数据存储区,是不可以修改的 char s[] ="My Dream Come true";//在栈中分配空间 memset(s,'b',6);//以字节为单位 printf("%s\n",s);//bbbbbbam Come true return 0; }
memset可以方便的清空一个结构类型的变量或数组。
例:
变量:struct position pos;
memset(&pos,0,sizeof(struct position));
数组:
struct position pos[10];
memset(pos,0,sizeof(struct position)*10);
2.memcpy
通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy
memcpy可以复制任意内容,例如字符数组、整型、结构体、类等
//memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度 #include <stdio.h> #include <string.h> int main() { char a[27]={'\0'}, b[30]={'\0'}; for(int i=0;i<26;i++) a[i] = 'A'+ i; memcpy(b, a, sizeof(b));//将a数组中的内容拷贝到b数组中去,b数组长度不应小于a puts(b);//ABCD.....Z return 0; }
如果上面的b数组长度小于a,则b中先会被赋值和b数组等长的字符串,另外,会追加整个a数组的字符串