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