32
Strings Programming Applications

Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Embed Size (px)

Citation preview

Page 1: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Strings

Programming Applications

Page 2: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Strings in C

C stores a string in a block of memory. The string is terminated by the \0 character:

Page 3: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Arrays of characters char word [] = { 'H', 'e', 'l', 'l', 'o', '!' }; To print out the contents of the array word, you run through each

element in the array and display it using the %c format characters. To do processings of the word (copy, concatenate two words, etc)

you need to have the actual length of the character array in a separate variable !

Page 4: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Strings

String is an array of characters

char Name[30];

char str[20] = “Initial Value”;

char S[]= “Welcome”;

Page 5: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Example: string length// Function to count the number of characters in a string#include <stdio.h>

int stringLength (char string[]){int count = 0;while ( string[count] != '\0' )

++count;return count;

}int main (void) {

char word1[] = { 'a', 's', 't', 'e', 'r', '\0' };char word2[] = { 'a', 't', '\0' };char word3[] = { 'a', 'w', 'e', '\0' };printf ("%i %i %i\n", stringLength (word1),

stringLength (word2), stringLength (word3));return 0;

}

Page 6: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Input / Output of strings

We can use %s to read and print a string

printf(“Name is %s \n”, Name);

scanf(“%s”, str);

Page 7: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Initializing character stringschar word[] = "Hello!"; Is equivalent with:char word[] = { 'H', 'e', 'l', 'l', 'o', '!', '\0' };

The null string: A character string that contains no characters other than the null character

char empty[]= "";char buf[100]= ""; Initializing a very long string over several lines:char letters[] = { "abcdefghijklmnopqrstuvwxyz\ABCDEFGHIJKLMNOPQRSTUVWXYZ" }; Adjacent strings are concatenated:char letters[] = { "abcdefghijklmnopqrstuvwxyz""ABCDEFGHIJKLMNOPQRSTUVWXYZ" };

Page 8: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

String functions The C library supplies several string-handling functions;

You don’t have to re-write them from scratch !

#include <string.h> strcat (s1, s2)

Concatenates the character string s2 to the end of s1, placing a null character at the end of the final string.The function also returns s1.

strcmp (s1, s2) Compares strings s1 and s2 and returns a value less than

zero if s1 is less than s2, equal to zero if s1 is equal to s2, and greater than zero if s1 is greater than s2.

strcpy (s1, s2) Copies the string s2 to s1, also returning s1.

strlen (s) Returns the number of characters in s, excluding the null

character.

Page 9: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

String functions (cont.) strncat (s1, s2, n)

Copies s2 to the end of s1 until either the null character is reached or n characters have been copied, whichever occurs first. Returns s1.

strncmp (s1, s2, n) Performs the same function as strcmp, except that at most n

characters from the strings are compared. strncpy (s1, s2, n)

Copies s2 to s1 until either the null character is reached or n characters have been copied, whichever occurs first. Returns s1.

strchr (s, c) Searches the string s for the last occurrence of the character c. If

found, a pointer to the character in s is returned; otherwise, the null pointer is returned.

strstr (s1, s2) Searches the string s1 for the first occurrence of the string s2. If

found, a pointer to the start of where s2 is located inside s1 is returned; otherwise, if s2 is not located inside s1, the null pointer is returned.

Page 10: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

String Functions

strcpy(s1, s2)

we can not use = with string

strcpy is copying s2 into s1

Page 11: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

String Functions

strlen(S)

Return the length of string S

strcpy(S, “industrial robot”);

strlen(S) will return 16

Page 12: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

String Functions

strcmp(s1, s2)

It is for comparison of s1 and s2

It return 0 if s1=s2

Return –ve if s1 is less than s2

Return +ve if s1 is greater than s2

Page 13: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

String Functions

strcat(s1, s2)

It appends s2 to the end of s1

Page 14: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

String to number conversion

// Function to convert a string to an integer – my atoi #include <stdio.h>int strToInt (const char string[]) {

int i, intValue, result = 0;for ( i = 0; string[i] >= '0' && string[i] <= '9'; ++i ){

intValue = string[i] - '0';result = result * 10 + intValue;

}return result;

}int main (void) {

printf ("%i\n", strToInt("245"));printf ("%i\n", strToInt("100") + 25);printf ("%i\n", strToInt("13x5"));return 0;

}

Page 15: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Example: string processing

#include <stdio.h>

void concat (char result[], const char str1[], const char str2[]);

int main (void){

const char s1[] = "Test " ;const char s2[] = "works." ;char s3[20];concat (s3, s1, s2);printf ("%s\n", s3);return 0;

}

Page 16: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Example: concatenate strings

// Function to concatenate two character stringsvoid concat (char result[], const char str1[],

const char str2[]){

int i, j;// copy str1 to resultfor ( i = 0; str1[i] != '\0'; ++i )

result[i] = str1[i];// copy str2 to resultfor ( j = 0; str2[j] != '\0'; ++j )

result[i + j] = str2[j];// Terminate the concatenated string with a null characterresult [i + j] = '\0';

}

Page 17: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

What is the output of

char str1[10];char str2[10]=“String2”;strcpy(str1, “hi bob”);if(!strcmp(str1, str2))

printf(“Equivelent \n”);strcat(str1, “x”);printf(“%s %c \n”, str1, str1[3]);strcat(str2, “have a nice day”);printf(“%s \n”, str2);

Page 18: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Testing strings for equalitybool equalStrings (const char s1[], const char s2[]){

int i = 0;bool areEqual;while ( s1[i] == s2 [i] && s1[i] != '\0' && s2[i] != '\0' )

++i;if ( s1[i] == '\0' && s2[i] == '\0' )

areEqual = true;else

areEqual = false;return areEqual;

}

!!!NOT: s1==s2

Page 19: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Exercise

Write a program to accept string and then

count the vowels and reverses it. Vowels are

{a, e, i, o, u, A, E, I, O, U}

Page 20: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Example

Write a program that print the number of

occurrences of a given character c in a given

string s.

Page 21: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Trace the program

int pos = 1;

int count =0;

char text[40]= “Welcome”;

while (pos <= strlen(text))

{

if(text[pos]==‘e’)

{count++;

printf(“+”);}

pos++;

}

printf(“%d”, count);

Page 22: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Example

Write a program to accept string str. Reverses string str (for example ABC > CBA). Adds (catenates) string n to the end of string str. Removes all occurrences of characters c from string str.

Page 23: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Example

Write a function Mystrlen() to find the length

of given string

Page 24: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Character pointers A string constant: "I am a string" is an array of characters. In the internal representation, the

array is terminated with the null character '\0' so that programs can find the end. The length in storage is thus one more than the number of characters between the double quotes.

a string constant is accessed by a pointer to its first element

char *pmessage; pmessage = "now is the time"; assigns to pmessage a pointer to the character array. This

is not a string copy; only pointers are involved !

Page 25: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Character pointers

amessage is an array, just big enough to hold the sequence of characters and '\0' that initializes it. Individual characters within the array may be changed but amessage will always refer to the same storage.

pmessage is a pointer, initialized to point to a string constant; the pointer may subsequently be modified to point elsewhere, but the result is undefined if you try to modify the string contents.

char amessage[] = "now is the time"; /* an array */char *pmessage = "now is the time"; /* a pointer */

now is the time\0

now is the time\0

amessage

pmessage

Page 26: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Character Pointers

String constant acts like a character pointerchar *pc = “ABCDE”; /* declare a character pointer variable */

Variable Address Valueconstant 731 ‘A’constant 732 ‘B’constant 733 ‘C’constant 734 ‘D’constant 735 ‘E’constant 736 ‘\0’pc 800 731

char s1[] = “abc”;

Variable Address Values1[0] 900 ‘a’s1[1] 901 ‘b’s1[2] 902 ‘c’s1[3] 903 ‘\0’

‘A’

‘B’

‘C’

‘D’

‘E’

‘\0’

731

732

733

734

735

736

731800

Page 27: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

1100Example:

char s1[] = “abc”;char *s2 = “abc”;

f(){

s1[1] = ‘y’; /* OK */s2[1] = ‘y’; /* wrong (PC is OK)*/s1 = “test”; /* wrong */s2 = “test”; /* OK */

}Example:

char s3[] = “abcdef”;

f1(){

char *s = s3;*s = ‘A’; /* s3[0]=‘A’ */s = “test”;printf(“%s\n%s\n”,s,s2);

}

Character Pointers‘a’

‘b’

‘c’

‘\0’

100

101

102

103

CONSTANT MEMORY AREA (READ ONLY)

104

105

106

107

‘t’

‘e’

‘s’

‘t’

‘\0’ 108

s1[]1000

1001

1002

1003

‘a’

‘b’

‘c’

‘\0’

100800

s2

...

1100

s3[]2000

s2000

2001

2002

2003

‘a’

‘b’

‘c’

‘d’2004 ‘e’

s3[0]=‘A’2000

2001

2002

2003

‘a’

‘b’

‘c’

‘d’2004 ‘e’

Page 28: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Precedence of operators

*p++ increments p after fetching the character that p points to

*++p increments p before fetching the character that p points to

char *p=“hello” ;printf(“%c”,*p++); // displays h

char *p=“hello” ;printf(“%c”,*++p); // displays e

Page 29: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Character pointers and functions/* strcpy: copy t to s; array subscript version */void strcpy(char s[], char t[]){

int i;i = 0;while ((s[i] = t[i]) != '\0')

i++;}/* strcpy: copy t to s; pointer version */void strcpy(char *s, char *t){

int i;i = 0;while ((*s = *t) != '\0') {

s++;t++;

}}

Page 30: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

argc and argv In environments those support C, there is a way to pass command-

line arguments or parameters to a program when it begin executing. When main is called to begin execution, it is called with two

arguments – argc and argv argc : The first (conventionally called argc) is the number of command-

line arguments the program was invoked with argv : The second (conventionally called argv) is a pointer to an array of

character strings that contain the arguments, one per string.

Example:

if echo is a program and executed on unix prompt, such as 10 <user:/home/droberts> echo hello world

Command-Line Arguments

pointer arrayargv

argc

e c h o \0

h e l l o \0

w o r l d \0null3

Page 31: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

Command-Line ArgumentsExample: print out the arguments. ex: hello worldmain (int argc, char *argv[]){ int i; for (i = 1; i < argc; i++) printf(“%s%c”, argv[i], (i < argc-1) ? ‘ ’ : ‘\n’);}

main (int argc, char *argv[]){ while (--argc > 0) printf(“%s%c”, *++argv, (argc > 1) ? ‘ ’ : ‘\n’);}

main (int argc, char *argv[]){ while (--argc > 0) printf((argc > 1) ? “%s “ ; “%s\n“, *++argv);}

Page 32: Strings Programming Applications. Strings in C C stores a string in a block of memory. The string is terminated by the \0 character:

The End