memccpy
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char src[] = "One, Two, Three, Four, Five"; char buff[256]; char *dest; puts(src); puts(""); // new line // copy into buff src to first 'F' char dest = memccpy(buff,src,'F',strlen(src)); *dest = '\0'; printf("dest : %s\n",dest); printf("buff : %s\n",buff); return 0; } OUTPUT : // One, Two, Three, Four, Five // // dest : // buff : One, Two, Three, F memchr
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *str = "aaaAbbbAcccAddd"; int ch = 'A'; char *ptr; printf("str : %s\n",str); printf("ch : %c\n",ch); ptr = memrchr(str,ch,strlen(str)); printf("pointer to first %c : %s\n", (char)ch,ptr); return 0; } OUTPUT : // str : aaaAbbbAcccAddd // ch : A // pointer to first A : AbbbAcccAddd memcmp
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char buff1[] = "First String"; char buff2[] = "First string"; size_t cmp; puts(buff1); puts(buff2); puts(""); // new line cmp = memcmp(buff1,"First str",5); if ( cmp == 0 ) puts("first 5 char buff1 and string are equal"); else if ( cmp < 0 ) puts("buff1 is less then string"); else puts("buff1 is greater then string"); cmp = memcmp(buff1,buff2,strlen(buff1)); printf("cmp = %d\n",cmp); if ( cmp == 0 ) puts("first 5 char buff1 and buff2 are equal"); else if ( cmp < 0 ) puts("buff1 is less then buff2"); else puts("buff1 is greater then buff2"); return 0; } OUTPUT : // First String // First string // // first 5 char buff1 and string are equal // cmp = -1 // buff1 is greater then buff2 memcpy
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *str = "One, Two, Three, Four, Five"; char buff1[256] = "\0"; char buff2[] = "aaaaaaaaaaaaaaaaaaaaaaaaaa"; puts(str); puts(buff2); puts(""); // new line memcpy(buff1,str+5,10); puts(buff1); printf("Length of buff1 is %d\n",strlen(buff1)); memcpy(buff2+5,str+9,8); puts(buff2); printf("Length of buff2 is %d\n",strlen(buff2)); /* overlapping of the buff2 */ /* use memmove instead */ memcpy(buff2+5,str,strlen(str)); puts(buff2); printf("Length of buff2 is %d\n",strlen(buff2)); return 0; } // One, Two, Three, Four, Five // aaaaaaaaaaaaaaaaaaaaaaaaaa // // Two, Three // Length of buff1 is 10 // aaaaa Three, aaaaaaaaaaaaa // Length of buff2 is 26 // aaaaaOne, Two, Three, Four, Five Three // Length of buff2 is 38 memmem
#define _GNU_SOURCE #include <stdio.h> int main (int argc, char *argv[]) { char src[] = "first and last line"; char pattern[] = "line"; char *ptr; printf("src : %s\n",src); printf("pattern : %s\n",pattern); puts(pattern); ptr = (char*)memmem(src,strlen(src), pattern,strlen(pattern)); printf("pointer to pattern : %s\n",ptr); return 0; } OUTPUT : // this function consists bug // and is dangerous to use // // src : first and last line // pattern : line // line // pointer to pattern : line memmove
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *str = "One, Two, Three, Four, Five"; char buff[256] = "aaaaaaaaaaaaaaaaaaaaaaaaaa"; puts(str); puts(buff); puts(""); // new line memcpy(buff,str+5,12); puts(buff); printf("Length of buff is %d\n",strlen(buff)); /* overlapping of the buff */ /* memcpy does it not correct */ memmove(buff+10,str,strlen(str)); puts(buff); printf("Length of buff is %d\n",strlen(buff)); return 0; } // One, Two, Three, Four, Five // aaaaaaaaaaaaaaaaaaaaaaaaaa // // Two, Three, aaaaaaaaaaaaaa // Length of buff is 26 // Two, ThreeOne, Two, Three, Four, Five // Length of buff is 37 memrchr
#include <stdio.h> int main (int argc, char *argv[]) { char *str = "aaaAbbbAcccAddd"; char *ptr; int ch = 'A'; /* last occurrence of 'A' into str */ ptr = (char*)memrchr(str,ch,strlen(str)); puts(ptr); return 0; } OUTPUT : // Addd memset
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char buff1[] = "One, Two, Three, Four, Five"; char buff2[256]; puts(buff1); puts(""); // new line memset(buff1,'-', 9); puts(buff1); memset(buff1+17, '-',10); puts(buff1); puts(""); memset(buff2,'*',27); memset(buff2+27,'\0',1); puts(buff2); return 0; } OUTPUT : // One, Two, Three, Four, Five // // --------- Three, Four, Five // --------- Three, ---------- // // ***************************