29
Strings A special kind 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

Strings A special kind 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

  • View
    232

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Strings A special kind 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

Strings

• A special kind 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

Page 2: Strings A special kind 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

C offers four main 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

Page 3: Strings A special kind 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

strcpy

• strcpy(destinationstring, sourcestring)

• Copies sourcestring into destinationstring

• For example

• strcpy(str, “hello world”); assigns “hello world” to the string str

Page 4: Strings A special kind 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

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);

}

Page 5: Strings A special kind 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

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”

Page 6: Strings A special kind 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

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);

}

Page 7: Strings A special kind 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

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

Page 8: Strings A special kind 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

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);

Page 9: Strings A special kind 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

continuedif (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”);

}

Page 10: Strings A special kind 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

strlen

• strlen(str) returns length of string excluding null character

• strlen(“tttt”) = 4 not 5 since \0 not counted

Page 11: Strings A special kind 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

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);

}

Page 12: Strings A special kind 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

Vowels 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] == ‘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);

}

Page 13: Strings A special kind 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

No of Words 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] == ‘ ‘) count++; } printf(“The number of words’s in %s is %d \n “, x,count+1);

}

Page 14: Strings A special kind 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

No of Words Example 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);

}

Page 15: Strings A special kind 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

Input output functions of 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

Page 16: Strings A special kind 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

Characters are at the heart of strings

Page 17: Strings A special kind 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

Exercise 1

Output11 21 2 3 1 2 3 4 ………….1 2 3 4 5 6 7 8 9 10

Page 18: Strings A special kind 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

Exercise 1

#include <stdio.h>main() { int i,j; for(j = 1; j <= 10; j++)

{for(i=1;i <= j;i++)

{ printf(“%d “,i);}

printf(“\n“);}}

Page 19: Strings A special kind 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

Exercise 2

Output** ** * ** * * *…………….* * * * * * * * * *

Page 20: Strings A special kind 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

Exercise 2

#include <stdio.h>main() { int i,j; for(j = 1; j <= 10; j++)

{for(i=1;i <= j;i++)

{ printf(“* “);}

printf(“\n“);}}

Page 21: Strings A special kind 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

Exercise 3

• Output

************ ** ** ** ** ** ** ** ************

Page 22: Strings A special kind 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

#include <stdio.h>main() { int i,j; for(j = 1; j <= 10; j++)

{printf(“* “);for(i=1;i <= 8;i++)

{ if ((j==1) || (j==10)) printf(“* “);

else printf(“ “);

}printf(“* \n “);

}}

Page 23: Strings A special kind 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

Some Useful C Character Functions

• Don't forget to #include <ctype.h> to get the function prototypes.

Page 24: Strings A special kind 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

Functions

• Function Return true 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].

Page 25: Strings A special kind 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

More Functions

• Function Return 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.

Page 26: Strings A special kind 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

Even More C Functions

• 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.

Page 27: Strings A special kind 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

Still More C Functions

• Function Return true if• int isascii(c); c is an ASCII character,

codeless 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)

Page 28: Strings A special kind 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

• Program to Reverse 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);

•}

Page 29: Strings A special kind 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

Program to count the 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 string\n"); • 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);

•}

•}