<string.h>中的一些常用库函数
参考资料:
[1]:菜鸟教程
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 char s[100]="0123456789\0"; 5 /** 6 如果读取s的格式为scanf("%s",s+1);从s+1位置开始读取; 7 那么,len=strlen(s+1),字符范围[1,len]; 8 s[len+1]='\0'; 9 注意strlen()中的参数一定是s+1; 10 */ 11 12 /*******************strcpy*************************/ 13 void testStrcpy() 14 { 15 /* 16 strcpy把含有'\0'结束符的字符串复制到另一个地址空间; 17 返回值的类型为char*。 18 */ 19 char t[100]; 20 strcpy(t+0,s+0);//复制s从0位置到结束的字符 21 t[strlen(t)]='\0';//最好在最后加上 22 printf("***test strcpy***\n"); 23 printf("%s\n",t); 24 } 25 /*******************memcpy*************************/ 26 void testMemcpy() 27 { 28 /* 29 memcpy(void *s1, const void *s2,int n) 30 从 s2 复制 n 个字符到 s1。 31 */ 32 char t[100]; 33 memcpy(t,s+3,4);//从第3个字符('3')开始复制,连续复制4个字符(t="3456") 34 t[4]='\0';//最好在最后加上 35 printf("***test memcpy***\n"); 36 printf("%s\n",t); 37 38 /* 39 memcpy(int *a+i,const int *b+j,n*sizeof(int)) 40 从 b 的 j 位置开始复制连续的 n 个数字到 a 的以 i 位置开始的连续的 n 个位置中 41 n:代表复制 b 中的连续的 n 个数字 42 sizeof(int):需要复制数字的单个的大小 43 如果需要复制 double 类型的,改成sizeof(double)即可 44 */ 45 int a[5]={-1,-1,-1,-1,-1};//memcpy后:{-1,1,2,3,-1} 46 int b[5]={ 0, 1, 2, 3, 4}; 47 memcpy(a+1,b+1,3*sizeof(int));//从b的1位置开始复制连续的3个数字到a+1中 48 for(int i=0;i < 5;++i) 49 printf("%d%c",a[i],i == 4 ? '\n':' '); 50 } 51 /*******************memcmp*************************/ 52 void testMemcmp() 53 { 54 /* 55 memcmp(const char *str1, const char *str2,size_t n)) 56 把 str1 和 str2 的前 n 个字节进行比较。 57 如果返回值 < 0,则表示 str1 小于 str2。 58 如果返回值 = 0,则表示 str1 等于 str2。 59 如果返回值 > 0,则表示 str1 大于 str2。 60 */ 61 char t[100]; 62 strcpy(t,"order"); 63 64 printf("***test memcmp***\n"); 65 printf("%s\n",memcmp(t,"order",strlen(t)) == 0 ? "YES":"NO");//YES 66 } 67 int main() 68 { 69 testStrcpy(); 70 testMemcpy(); 71 testMemcmp(); 72 }