String manipulation techniques like string compare copy
1.
Strings
• A specialkind of array is an array of characters
ending in the null character 0 called string
arrays
• A string is declared as an array of characters
• char s[10]
• char p[30]
• When declaring a string don’t forget to leave a
space for the null character which is also known
as the string terminator character
2.
C offers fourmain operations on
strings
• strcpy - copy one string into another
• strcat - append one string onto the right
side of the other
• strcmp – compare alphabetic order of two
strings
• strlen – return the length of a string
Example with strcpy
#include<stdio.h>
#include <string.h>
main()
{
char x[] = “Example with strcpy”;
char y[25];
printf(“The string in array x is %s n “, x);
strcpy(y,x);
printf(“The string in array y is %s n “, y);
}
5.
strcat
• strcat(destinationstring, sourcestring)
•appends sourcestring to right hand side of
destinationstring
• For example if str had value “a big ”
• strcat(str, “hello world”); appends “hello world” to
the string “a big ” to get
• “ a big hello world”
6.
Example with strcat
#include<stdio.h>
#include <string.h>
main()
{
char x[] = “Example with strcat”;
char y[]= “which stands for string concatenation”;
printf(“The string in array x is %s n “, x);
strcat(x,y);
printf(“The string in array x is %s n “, x);
}
7.
strcmp
• strcmp(stringa, stringb)
•Compares stringa and stringb alphabetically
• Returns a negative value if stringa precedes
stringb alphabetically
• Returns a positive value if stringb precedes
stringa alphabetically
• Returns 0 if they are equal
• Note lowercase characters are greater than
Uppercase
8.
Example with strcmp
#include<stdio.h>
#include <string.h>
main()
{
char x[] = “cat”;
char y[]= “cat”;
char z[]= “dog”;
if (strcmp(x,y) == 0)
printf(“The string in array x %s is equal to
that in %s n “, x,y);
9.
continued
if (strcmp(x,z) !=0)
{printf(“The string in array x %s is not equal to that in z %s n “,
x,z);
if (strcmp(x,z) < 0)
printf(“The string in array x %s precedes that in z %s n “, x,z);
else
printf(“The string in array z %s precedes that in x %s n “, z,x);
}
else
printf( “they are equal”);
}
10.
strlen
• strlen(str) returnslength of string excluding
null character
• strlen(“tttt”) = 4 not 5 since 0 not counted
11.
Example with strlen
#include<stdio.h>
#include <string.h>
main()
{
int i, count;
char x[] = “tommy tucket took a tiny ticket ”;
count = 0;
for (i = 0; i < strlen(x);i++)
{
if (x[i] == ‘t’) count++;
}
printf(“The number of t’s in %s is %d n “, x,count);
}
12.
Vowels Example withstrlen
#include <stdio.h>
#include <string.h>
main()
{
int i, count;
char x[] = “tommy tucket took a tiny ticket ”;
count = 0;
for (i = 0; i < strlen(x);i++)
{
if ((x[i] == ‘a’)||(x[i]==‘e’)||(x[i]==‘I’)||(x[i]==‘o’)||(x[i]==‘u’)) count+
+;
}
printf(“The number of vowels’s in %s is %d n “, x,count);
}
13.
No of WordsExample with strlen
#include <stdio.h>
#include <string.h>
main()
{
int i, count;
char x[] = “tommy tucket took a tiny ticket ”;
count = 0;
for (i = 0; i < strlen(x);i++)
{
if ((x[i] == ‘ ‘) count++;
}
printf(“The number of words’s in %s is %d n “, x,count+1);
}
14.
No of WordsExample with more
than one space between words
#include <stdio.h>
#include <string.h>
main()
{
int i,j, count;
char x[] = “tommy tucket took a tiny ticket ”;
count = 0;
for (i = 0; i < strlen(x);i++)
{
if ((x[i] == ‘ ‘)
{ count++;
for(j=i;x[j] != ‘ ‘;j++);
i = j;
}
}
printf(“The number of words’s in %s is %d n “, x,count+1);
}
15.
Input output functionsof characters
and strings
• getchar() reads a character from the
screen in a non-interactive environment
• getche() like getchar() except interactive
• putchar(int ch) outputs a character to
screen
• gets(str) gets a string from the keyboard
• puts(str) outputs string to screen
Some Useful CCharacter
Functions
• Don't forget to #include <ctype.h> to get
the function prototypes.
24.
Functions
• Function Returntrue if
• int isalpha(c); c is a letter.
• int isupper(c); c is an upper case
letter.
• int islower(c); c is a lower case letter.
• int isdigit(c); c is a digit [0-9].
25.
More Functions
• FunctionReturn true if
• int isxdigit(c); c is a hexadecimal digit
[0-9A-Fa-f].
• int isalnum(c); c is an alphanumeric character
(c is a letter or a digit);
• int isspace(c); c is a SPACE, TAB,
RETURN, NEWLINE, FORMFEED,
or vertical tab character.
26.
Even More CFunctions
• Function Return true if
• int ispunct(c); c is a punctuation
character (neither control nor
alphanumeric).
• int isprint(c); c is a printing character.
• int iscntrl(c); c is a delete character or
ordinary control character.
27.
Still More CFunctions
• Function Return true if
• int isascii(c); c is an ASCII character, code
less than 0200.
• int toupper(int c); convert character c to
upper case (leave it alone if not lower)
• int tolower(int c); convert character c to
lower case (leave it alone if not upper)
28.
• Program toReverse Strings
• #include <stdio.h>
#include <string.h>
int main ()
{
• int i;
char a[10];
char temp;
//clrscr(); // only works on windows
gets(a);
• for (i = 0; a[i] != '0' ; i++);
• i--;
• for (int j = 0; j <= i/2 ; j++)
{
• temp = a[j];
a[j] = a[i - j];
a[i - j] = temp;
• }
printf("%s",a);
return(0);
•
}
29.
Program to countthe number of
vowels in a string :
• Note Two different ways to declare strings
• One using pointers *str
• Two using character array char a[]
• #include <stdio.h>
#include <string.h>
• void main() {
• char *str;
• char a[]="aeiouAEIOU";
• int i,j,count=0;
• clrscr();
• printf("nEnter the stringn");
• gets(str);
• for(i=0;str[i]!='0';i++)
• {
• for(j=0;a[j]!='0';j++)
• if(a[j] == str[i]
• {
• count++;
• break;
•
}
printf("nNo. of vowels = %d",count);
•
}
•
}