basename
#include <stdio.h> #include <libgen.h> int main (int argc, char *argv[]) { char *path = "/usr/include/libgen.h"; char *p = basename(path); printf("Path : %s\n",path); printf("basename : %s\n",p); return 0; } OUTPUT : // Path : /usr/include/libgen.h // basename : libgen.h index, rindex
#include <stdio.h> int main (int argc, char *argv[]) { char *str = "first Test sTring"; int ch = 'T'; char *ptr; ptr = (char*)index(str,ch); printf("str : %s\n",str); printf("char to find : %c\n",ch); printf("first occurrence of %c is %s\n",ch,ptr); ptr = (char*)rindex(str,ch); printf("last occurrence of %c is %s\n",ch,ptr); return 0; } OUTPUT : // str : first Test sTring // char to find : T // first occurrence of T is Test sTring // last occurrence of T is Tring strcasecmp
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char buff1[] = "first and last line"; char buff2[] = "FIRST and LAST Line"; int cmp = strcmp(buff1,buff2); puts("strcmp function :"); if ( cmp == 0 ) puts("buff1 and buff2 is equal"); else if ( cmp > 0 ) puts("buff1 is greater then buff2"); else puts("buff1 is less then buff2"); cmp = strcasecmp(buff1,buff2); puts("strcasecmp function :"); if ( cmp == 0 ) puts("buff1 and buff2 is equal"); else if ( cmp > 0 ) puts("buff1 is greater then buff2"); else puts("buff1 is less then buff2"); return 0; } OUTPUT : // strcmp function : // buff1 is greater then buff2 // strcasecmp function : // buff1 and buff2 is equal strcat
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char buff[256]; char *s1 = "First string "; char s2[] = "Second string "; strcat(buff,s1); puts(buff); strcat(buff,s2); puts(buff); strcat(buff,"Third string"); puts(buff); return 0; } OUTPUT : // First string // First string Second string // First stringSecond string Third string strchr, strrchr
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *str = "First test string"; char *p1, *p2; int ch1 = 't'; int ch2 = 'T'; p1 = strchr(str,ch1); printf("First occurrence of %c:\n%s\n",ch1,p1); p2 = strrchr(str,ch1); printf("Last occurrence of %c:\n%s\n",ch1,p2); p1 = strchr(str,ch2); if ( !p1 ) printf("Pattern %c not found",ch2); return 0; } OUTPUT : // First occurrence of t: // t test string // Last occurrence of t: // tring // Pattern T not found strcmp, strncmp
#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 = strcmp(buff1,buff2); if ( cmp == 0 ) puts("first 5 char buff1 and buff2 are equal"); else if ( cmp < 0 ) puts("buff1 is less then string"); else puts("buff1 is greater then string"); cmp = strncmp (buff1,buff2,5); 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; } // First String // First string // // buff1 is greater then string // cmp = 0 // first 5 char buff1 and buff2 are equal strcpy
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *str = "First string, "; char ary[] = "Second string, "; char buff[255]; strcpy(buff,str); // constant string puts(buff); strcpy(buff,ary); // array of characters puts(buff); strcpy(buff,"Third string\n"); puts(buff); return 0; } OUTPUT : // First string, // Second string, // Third string strcspn, strspn
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *str = "First test string"; char *reg1 = "u"; char *reg2 = "uoag"; size_t n; printf("str : %s\n",str); printf("reg1 : %s\n",reg1); printf("reg2 : %s\n",reg2); n = strspn(str,reg1); printf("First occurrence of char from reg1 on\n\t\ position %d\n",n); n = strcspn(str,reg2); printf("First occurrence of not char from reg2 on\n\t\ position %d\n",n); return 0; } OUTPUT : strdup, strndup
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *str = "First Test String"; char *p1, *p2; printf("original str : %s\n", str); // p1 now is 0 terminated string p1 = strdup(str+11); printf("p1 : %s\n",p1); // copy 11 characters from str // start from 7th to p2. p2 = (char*)strndup(str+6,11); printf("p2 : %s\n",p2); return 0; } OUTPUT : // original str : First Test String // p1 : String // p2 : Test String strlen
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { int lenght, i; char buff[256], temp[3]; char *s1 = "12345"; char s2[] = "Two"; printf("Empty Buffer lenght = %d\n",strlen(buff)); strcpy(buff,s1); printf("Buffer lenght = %d\n",strlen(buff)); lenght = strlen(s2); for ( i = 0; i < lenght; i++ ) { sprintf(temp,"%c",s2[i]); strcat(buff,temp); printf("Buffer lenght = %d\n",strlen(buff)); } return 0; } OUTPUT : // Empty Buffer lenght = 1 // Buffer lenght = 5 // Buffer lenght = 6 // Buffer lenght = 7 // Buffer lenght = 8 strncasecmp
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char buff1[] = "first and last line"; char buff2[] = "FIRST and LAST Line"; int cmp = strncmp(buff1,buff2,5); puts("strcmp function :"); if ( cmp == 0 ) puts("buff1 and buff2 is equal"); else if ( cmp > 0 ) puts("buff1 is greater then buff2"); else puts("buff1 is less then buff2"); cmp = strncasecmp(buff1,buff2,5); puts("strcasecmp function :"); if ( cmp == 0 ) puts("buff1 and buff2 is equal"); else if ( cmp > 0 ) puts("buff1 is greater then buff2"); else puts("buff1 is less then buff2"); return 0; } OUTPUT : // strncmp function : // buff1 is greater then buff2 // strncasecmp function : // buff1 and buff2 is equal strncat
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *p; int ch = 'A'; char temp[3]; p = (char*)malloc(26); for ( ; ch < 'K'; ch++ ) { sprintf(temp,"%c",ch); strncat(p,temp,1); printf("%s\n",p); } return 0; } OUTPUT : // A // AB // ABC // ABCD // ABCDE // ABCDEF // ABCDEFG // ABCDEFGH // ABCDEFGHI // ABCDEFGHIJ strncpy
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char s1[] = "Long first string"; char buff[256]; size_t n = strlen(s1) - strlen(" string"); strncpy(buff,s1,n); buff[n] = '\0'; puts(buff); return 0; } OUTPUT : // Long first strpbrk
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *str = "First test string"; char *pat = "uot"; char *p; p = strpbrk(str,pat); printf("str : %s\n",str); printf("pattern : %s\n",pat); printf("pointer fo first occurrence any\n\ char into str from pat is : %s\n", p); return 0; } OUTPUT : // str : First test string // pattern : uot // pointer fo first occurrence any // char into str from pat is : t test string strsep
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *str[] = {"first","second","third","forth"}; char *pat = "third"; char *p; p = (char*)strsep(str,pat); *p = '\0'; puts(p); return 0; } OUTPUT : strstr
#include <stdio.h> int main (int argc, char *argv[]) { char *str = "First test string"; char *pat = "test"; char *p; p = (char*)strstr(str,pat); printf("str : %s\n",str); printf("pattern : %s\n",pat); printf("first occurrence of entry pattern\n\ into str is : %s\n",p); return 0; } OUTPUT : // str : First test string // pattern : test // first occurrence of entry pattern // into str is : test string strtok
#include <stdio.h> #include <string.h> int main (int argc, char *argv[]) { char *rec = "001:Linda Bain:F:42:programmer"; char copy[256]; char *p; int n = 0; char *field[] = {" NAME : ", " SEX : ", " AGE : ", "occupation : "}; // const (*rec) will not works strcpy(copy,rec); // first initialization of p p = strtok(copy,":"); printf(" ID : %s\n",p); // rest of tokens while ( (p = strtok(NULL,":")) != NULL ) { printf("%s%s\n",field[n++],p); } return 0; } OUTPUT : // strtok destroys original string!!! // // ID : 001 // NAME : Linda Bain // SEX : F // AGE : 42 // occupation : programmer