[ITP - Lecture 17] Strings in C/C++

Muhammad Hammad Waseem
Muhammad Hammad WaseemLecturer en University of Azad Jammu & Kashmir

Strings in C/C++, Pointers and Strings, Standard Library String Functions

Strings Intro to Programming
MUHAMMAD HAMMAD WASEEM 1
What are Strings?
The way a group of integers can be stored in an integer array, similarly a group of characters can be
stored in a character array. Character arrays are many a time also called strings. Many languages
internally treat strings as character arrays, but somehow conceal this fact from the programmer.
Character arrays or strings are used by programming languages to manipulate text such as words and
sentences.
A string constant is a one-dimensional array of characters terminated by a null ( ‘0’ ). For example,
char name[ ] = { 'H', 'A', 'E', 'S', 'L', 'E', 'R', '0' } ;
Each character in the array occupies one byte of memory and the last character is always ‘0’. What
character is this? It looks like two characters, but it is actually only one character, with the  indicating
that what follows it is something special. ‘0’ is called null character. Note that ‘0’ and ‘0’ are not
same. ASCII value of ‘0’ is 0, whereas ASCII value of ‘0’ is 48. Figure 9.1 shows the way a character
array is stored in memory. Note that the elements of the character array are stored in contiguous
memory locations.
The terminating null (‘0’) is important, because it is the only way the functions that work with a
string can know where the string ends. In fact, a string not terminated by a ‘0’ is not really a string, but
merely a collection of characters.
C concedes the fact that you would use strings very often and hence provides a shortcut for
initializing strings. For example, the string used above can also be initialized as,
char name[ ] = "HAESLER" ;
Note that, in this declaration ‘0’ is not necessary. C inserts the null character automatically.
/* Program to demonstrate printing of a string */
main( )
{
char name[ ] = "Klinsman" ;
int i = 0 ;
while ( i <= 7 )
{
printf ( "%c", name[i] ) ;
i++ ;
}
}
And here is the output...
Klinsman
We have initialized a character array, and then printed out the elements of this array within a while
loop. Can we write the while loop without using the final value 7? We can; because we know that each
character array always ends with a ‘0’. Following program illustrates this.
main( )
{
char name[ ] = "Klinsman" ;
Strings Intro to Programming
MUHAMMAD HAMMAD WASEEM 2
int i = 0 ;
while ( name[i] != `0' )
{
printf ( "%c", name[i] ) ;
i++ ;
}
}
And here is the output...
Klinsman
Even though there are so many ways (as shown above) to refer to the elements of a character
array, rarely is any one of them used. This is because printf( ) function has got a sweet and simple
way of doing it, as shown below. Note that printf( ) doesn’t print the ‘0’.
main( )
{
char name[ ] = "Klinsman" ;
printf ( "%s", name ) ;
}
The %s used in printf( ) is a format specification for printing out a string. The same specification can
be used to receive a string from the keyboard, as shown below.
main( )
{
char name[25] ;
printf ( "Enter your name " ) ;
scanf ( "%s", name ) ;
printf ( "Hello %s!", name ) ;
}
And here is a sample run of the program...
Enter your name Debashish
Hello Debashish!
Note that the declaration char name[25] sets aside 25 bytes under the array name[ ], whereas
the scanf( ) function fills in the characters typed at keyboard into this array until the enter key is hit.
Once enter is hit, scanf( ) places a ‘0’ in the array. Naturally, we should pass the base address of the
array to the scanf( ) function.
While entering the string using scanf( ) we must be cautious about two things:
a) The length of the string should not exceed the dimension of the character array. This is
because the C compiler doesn’t perform bounds checking on character arrays. Hence, if you
carelessly exceed the bounds there is always a danger of overwriting something important,
and in that event, you would have nobody to blame but yourselves.
b) scanf( ) is not capable of receiving multi-word strings. Therefore names such as ‘Debashish
Roy’ would be unacceptable. The way to get around this limitation is by using the function
gets( ). The usage of functions gets( ) and its counterpart puts( ) is shown below.
main( )
{
char name[25] ;
Strings Intro to Programming
MUHAMMAD HAMMAD WASEEM 3
printf ( "Enter your full name " ) ;
gets ( name ) ;
puts ( "Hello!" ) ;
puts ( name ) ;
}
And here is the output...
Enter your name Debashish Roy
Hello!
Debashish Roy
Pointers and Strings
Suppose we wish to store “Hello”. We may either store it in a string or we may ask the C compiler
to store it at some location in memory and assign the address of the string in a char pointer. This is
shown below:
char str[ ] = "Hello" ;
char *p = "Hello" ;
There is a subtle difference in usage of these two forms. For example, we cannot assign a string to
another, whereas, we can assign a char pointer to another char pointer. This is shown in the following
program.
main( )
{
char str1[ ] = "Hello" ;
char str2[10] ;
char *s = "Good Morning" ;
char *q ;
str2 = str1 ; /* error */
q = s ; /* works */
}
Also, once a string has been defined it cannot be initialized to another set of characters. Unlike
strings, such an operation is perfectly valid with char pointers.
main( )
{
char str1[ ] = "Hello" ;
char *p = "Hello" ;
str1 = "Bye" ; /* error */
p = "Bye" ; /* works */
}
Standard Library String Functions
With every C compiler a large set of useful string handling library functions are provided. Following
table show the most commonly used functions along with their purpose.
Function Use
strlen Finds length of a string
strlwr Converts a string to lowercase
Strings Intro to Programming
MUHAMMAD HAMMAD WASEEM 4
strupr Converts a string to uppercase
strcat Appends one string at the end of another
strncat Appends first n characters of a string at the end of another
strcpy Copies a string into another
strncpy Copies first n characters of one string into another
strcmp Compares two strings
strncmp Compares first n characters of two strings
strcmpi Compares two strings without regard to case ("i" denotes that this function ignores case)
stricmp Compares two strings without regard to case (identical to strcmpi)
strnicmp Compares first n characters of two strings without regard to case
strdup Duplicates a string
strchr Finds first occurrence of a given character in a string
strrchr Finds last occurrence of a given character in a string
strstr Finds first occurrence of a given string in another string
strset Sets all characters of string to a given character
strnset Sets first n characters of a string to a given character
strrev Reverses string
Out of the above list we shall discuss the functions strlen( ), strcpy( ), strcat( ) and strcmp( ), since
these are the most commonly used functions. This will also illustrate how the library functions in
general handle strings.
strlen( )
This function counts the number of characters present in a string. Its usage is illustrated following.
main( )
{
char arr[ ] = "Bamboozled" ;
int len1, len2 ;
len1 = strlen ( arr ) ;
len2 = strlen ( "Humpty Dumpty" ) ;
printf ( "nstring = %s length = %d", arr, len1 ) ;
printf ( "nstring = %s length = %d", "Humpty Dumpty", len2 ) ;
}
The output would be...
string = Bamboozled length = 10
string = Humpty Dumpty length = 13
Note that in the first call to the function strlen( ), we are passing the base address of the
string, and the function in turn returns the length of the string. While calculating the length it doesn’t
count ‘0’. Even in the second call,
len2 = strlen ( "Humpty Dumpty" ) ;
what gets passed to strlen( ) is the address of the string and not the string itself.
strcpy( )
This function copies the contents of one string into another. The base addresses of the source and
target strings should be supplied to this function. Here is an example of strcpy( ) in action...
Strings Intro to Programming
MUHAMMAD HAMMAD WASEEM 5
main( )
{
char source[ ] = "Sayonara" ;
char target[20] ;
strcpy ( target, source ) ;
printf ( "nsource string = %s", source ) ;
printf ( "ntarget string = %s", target ) ;
}
And here is the output...
source string = Sayonara
target string = Sayonara
strcat( )
This function concatenates the source string at the end of the target string. For example, “Bombay”
and “Nagpur” on concatenation would result into a string “BombayNagpur”. Here is an example of
strcat( ) at work.
main( )
{
char source[ ] = "Folks!" ;
char target[30] = "Hello" ;
strcat ( target, source ) ;
printf ( "nsource string = %s", source ) ;
printf ( "ntarget string = %s", target ) ;
}
And here is the output...
source string = Folks!
target string = HelloFolks!
strcmp( )
This is a function which compares two strings to find out whether they are same or different. The
two strings are compared character by character until there is a mismatch or end of one of the strings
is reached, whichever occurs first. If the two strings are identical, strcmp( ) returns a value zero. If
they’re not, it returns the numeric difference between the ASCII values of the first non-matching pairs
of characters. Here is a program which puts strcmp( ) in action.
main( )
{
char string1[ ] = "Jerry" ;
char string2[ ] = "Ferry" ;
int i, j, k ;
i = strcmp ( string1, "Jerry" ) ;
j = strcmp ( string1, string2 ) ;
k = strcmp ( string1, "Jerry boy" ) ;
printf ( "n%d %d %d", i, j, k ) ;
}
And here is the output...
0 4 -32

Recomendados

[ITP - Lecture 16] Structures in C/C++ por
[ITP - Lecture 16] Structures in C/C++[ITP - Lecture 16] Structures in C/C++
[ITP - Lecture 16] Structures in C/C++Muhammad Hammad Waseem
188 vistas5 diapositivas
[ITP - Lecture 15] Arrays & its Types por
[ITP - Lecture 15] Arrays & its Types[ITP - Lecture 15] Arrays & its Types
[ITP - Lecture 15] Arrays & its TypesMuhammad Hammad Waseem
222 vistas6 diapositivas
[ITP - Lecture 13] Introduction to Pointers por
[ITP - Lecture 13] Introduction to Pointers[ITP - Lecture 13] Introduction to Pointers
[ITP - Lecture 13] Introduction to PointersMuhammad Hammad Waseem
109 vistas6 diapositivas
[ITP - Lecture 14] Recursion por
[ITP - Lecture 14] Recursion[ITP - Lecture 14] Recursion
[ITP - Lecture 14] RecursionMuhammad Hammad Waseem
102 vistas3 diapositivas
C Programming Unit-3 por
C Programming Unit-3C Programming Unit-3
C Programming Unit-3Vikram Nandini
340 vistas23 diapositivas
C programming(part 3) por
C programming(part 3)C programming(part 3)
C programming(part 3)SURBHI SAROHA
251 vistas25 diapositivas

Más contenido relacionado

La actualidad más candente

[ITP - Lecture 12] Functions in C/C++ por
[ITP - Lecture 12] Functions in C/C++[ITP - Lecture 12] Functions in C/C++
[ITP - Lecture 12] Functions in C/C++Muhammad Hammad Waseem
185 vistas6 diapositivas
C Programming Unit-2 por
C Programming Unit-2C Programming Unit-2
C Programming Unit-2Vikram Nandini
198 vistas47 diapositivas
Lecture 18 - Pointers por
Lecture 18 - PointersLecture 18 - Pointers
Lecture 18 - PointersMd. Imran Hossain Showrov
336 vistas34 diapositivas
[ITP - Lecture 04] Variables and Constants in C/C++ por
[ITP - Lecture 04] Variables and Constants in C/C++[ITP - Lecture 04] Variables and Constants in C/C++
[ITP - Lecture 04] Variables and Constants in C/C++Muhammad Hammad Waseem
135 vistas3 diapositivas
POINTERS IN C MRS.SOWMYA JYOTHI.pdf por
POINTERS IN C MRS.SOWMYA JYOTHI.pdfPOINTERS IN C MRS.SOWMYA JYOTHI.pdf
POINTERS IN C MRS.SOWMYA JYOTHI.pdfSowmyaJyothi3
343 vistas18 diapositivas
Functions and pointers_unit_4 por
Functions and pointers_unit_4Functions and pointers_unit_4
Functions and pointers_unit_4Saranya saran
82 vistas112 diapositivas

La actualidad más candente(20)

POINTERS IN C MRS.SOWMYA JYOTHI.pdf por SowmyaJyothi3
POINTERS IN C MRS.SOWMYA JYOTHI.pdfPOINTERS IN C MRS.SOWMYA JYOTHI.pdf
POINTERS IN C MRS.SOWMYA JYOTHI.pdf
SowmyaJyothi3343 vistas
Functions and pointers_unit_4 por Saranya saran
Functions and pointers_unit_4Functions and pointers_unit_4
Functions and pointers_unit_4
Saranya saran82 vistas
46630497 fun-pointer-1 por AmIt Prasad
46630497 fun-pointer-146630497 fun-pointer-1
46630497 fun-pointer-1
AmIt Prasad253 vistas
Diploma ii cfpc u-4 function, storage class and array and strings por Rai University
Diploma ii  cfpc u-4 function, storage class and array and stringsDiploma ii  cfpc u-4 function, storage class and array and strings
Diploma ii cfpc u-4 function, storage class and array and strings
Rai University451 vistas
Maharishi University of Management (MSc Computer Science test questions) por Dharma Kshetri
Maharishi University of Management (MSc Computer Science test questions)Maharishi University of Management (MSc Computer Science test questions)
Maharishi University of Management (MSc Computer Science test questions)
Dharma Kshetri12K vistas
USER DEFINED FUNCTIONS IN C MRS.SOWMYA JYOTHI.pdf por SowmyaJyothi3
USER DEFINED FUNCTIONS IN C MRS.SOWMYA JYOTHI.pdfUSER DEFINED FUNCTIONS IN C MRS.SOWMYA JYOTHI.pdf
USER DEFINED FUNCTIONS IN C MRS.SOWMYA JYOTHI.pdf
SowmyaJyothi3470 vistas
Btech i pic u-4 function, storage class and array and strings por Rai University
Btech i pic u-4 function, storage class and array and stringsBtech i pic u-4 function, storage class and array and strings
Btech i pic u-4 function, storage class and array and strings
Rai University565 vistas
Functions torage class and array and strings- por aneebkmct
Functions torage class and array and strings-Functions torage class and array and strings-
Functions torage class and array and strings-
aneebkmct30 vistas
Mcai pic u 4 function, storage class and array and strings por Rai University
Mcai pic u 4 function, storage class and array and stringsMcai pic u 4 function, storage class and array and strings
Mcai pic u 4 function, storage class and array and strings
Rai University338 vistas
Bsc cs i pic u-4 function, storage class and array and strings por Rai University
Bsc cs i pic u-4 function, storage class and array and stringsBsc cs i pic u-4 function, storage class and array and strings
Bsc cs i pic u-4 function, storage class and array and strings
Rai University443 vistas

Similar a [ITP - Lecture 17] Strings in C/C++

14 strings por
14 strings14 strings
14 stringsRohit Shrivastava
1.4K vistas21 diapositivas
Strings por
StringsStrings
StringsMitali Chugh
5.7K vistas24 diapositivas
String notes por
String notesString notes
String notesPrasadu Peddi
116 vistas8 diapositivas
C Programming Strings.docx por
C Programming Strings.docxC Programming Strings.docx
C Programming Strings.docx8759000398
1 vista7 diapositivas
Handling of character strings C programming por
Handling of character strings C programmingHandling of character strings C programming
Handling of character strings C programmingAppili Vamsi Krishna
4.1K vistas41 diapositivas
Unitii string por
Unitii stringUnitii string
Unitii stringSowri Rajan
12 vistas9 diapositivas

Similar a [ITP - Lecture 17] Strings in C/C++(20)

C Programming Strings.docx por 8759000398
C Programming Strings.docxC Programming Strings.docx
C Programming Strings.docx
87590003981 vista
STRINGS IN C MRS.SOWMYA JYOTHI.pdf por SowmyaJyothi3
STRINGS IN C MRS.SOWMYA JYOTHI.pdfSTRINGS IN C MRS.SOWMYA JYOTHI.pdf
STRINGS IN C MRS.SOWMYA JYOTHI.pdf
SowmyaJyothi3315 vistas
Strings in programming tutorial. por Samsil Arefin
Strings  in programming tutorial.Strings  in programming tutorial.
Strings in programming tutorial.
Samsil Arefin156 vistas
String in programming language in c or c++ por Azeemaj101
String in programming language in c or c++String in programming language in c or c++
String in programming language in c or c++
Azeemaj10192 vistas
Strings in c por vampugani
Strings in cStrings in c
Strings in c
vampugani2.4K vistas
Lecture 15_Strings and Dynamic Memory Allocation.pptx por JawadTanvir
Lecture 15_Strings and  Dynamic Memory Allocation.pptxLecture 15_Strings and  Dynamic Memory Allocation.pptx
Lecture 15_Strings and Dynamic Memory Allocation.pptx
JawadTanvir1 vista
9 character string &amp; string library por MomenMostafa
9  character string &amp; string library9  character string &amp; string library
9 character string &amp; string library
MomenMostafa398 vistas
function, storage class and array and strings por Rai University
 function, storage class and array and strings function, storage class and array and strings
function, storage class and array and strings
Rai University1.9K vistas
Strings(2007) por svit vasad
Strings(2007)Strings(2007)
Strings(2007)
svit vasad319 vistas
Strings por Imad Ali
StringsStrings
Strings
Imad Ali1.9K vistas

Más de Muhammad Hammad Waseem

[ITP - Lecture 10] Switch Statement, Break and Continue Statement in C/C++ por
[ITP - Lecture 10] Switch Statement, Break and Continue Statement in C/C++[ITP - Lecture 10] Switch Statement, Break and Continue Statement in C/C++
[ITP - Lecture 10] Switch Statement, Break and Continue Statement in C/C++Muhammad Hammad Waseem
455 vistas4 diapositivas
[ITP - Lecture 08] Decision Control Structures (If Statement) por
[ITP - Lecture 08] Decision Control Structures (If Statement)[ITP - Lecture 08] Decision Control Structures (If Statement)
[ITP - Lecture 08] Decision Control Structures (If Statement)Muhammad Hammad Waseem
202 vistas6 diapositivas
[ITP - Lecture 07] Comments in C/C++ por
[ITP - Lecture 07] Comments in C/C++[ITP - Lecture 07] Comments in C/C++
[ITP - Lecture 07] Comments in C/C++Muhammad Hammad Waseem
83 vistas1 diapositiva
[ITP - Lecture 06] Operators, Arithmetic Expression and Order of Precedence por
[ITP - Lecture 06] Operators, Arithmetic Expression and Order of Precedence[ITP - Lecture 06] Operators, Arithmetic Expression and Order of Precedence
[ITP - Lecture 06] Operators, Arithmetic Expression and Order of PrecedenceMuhammad Hammad Waseem
669 vistas4 diapositivas
[ITP - Lecture 05] Datatypes por
[ITP - Lecture 05] Datatypes[ITP - Lecture 05] Datatypes
[ITP - Lecture 05] DatatypesMuhammad Hammad Waseem
73 vistas3 diapositivas
[ITP - Lecture 03] Introduction to C/C++ por
[ITP - Lecture 03] Introduction to C/C++[ITP - Lecture 03] Introduction to C/C++
[ITP - Lecture 03] Introduction to C/C++Muhammad Hammad Waseem
153 vistas2 diapositivas

Más de Muhammad Hammad Waseem(20)

[ITP - Lecture 10] Switch Statement, Break and Continue Statement in C/C++ por Muhammad Hammad Waseem
[ITP - Lecture 10] Switch Statement, Break and Continue Statement in C/C++[ITP - Lecture 10] Switch Statement, Break and Continue Statement in C/C++
[ITP - Lecture 10] Switch Statement, Break and Continue Statement in C/C++
[ITP - Lecture 08] Decision Control Structures (If Statement) por Muhammad Hammad Waseem
[ITP - Lecture 08] Decision Control Structures (If Statement)[ITP - Lecture 08] Decision Control Structures (If Statement)
[ITP - Lecture 08] Decision Control Structures (If Statement)
[ITP - Lecture 06] Operators, Arithmetic Expression and Order of Precedence por Muhammad Hammad Waseem
[ITP - Lecture 06] Operators, Arithmetic Expression and Order of Precedence[ITP - Lecture 06] Operators, Arithmetic Expression and Order of Precedence
[ITP - Lecture 06] Operators, Arithmetic Expression and Order of Precedence
[ITP - Lecture 02] Steps to Create Program & Approaches of Programming por Muhammad Hammad Waseem
[ITP - Lecture 02] Steps to Create Program & Approaches of Programming[ITP - Lecture 02] Steps to Create Program & Approaches of Programming
[ITP - Lecture 02] Steps to Create Program & Approaches of Programming
[ITP - Lecture 01] Introduction to Programming & Different Programming Languages por Muhammad Hammad Waseem
[ITP - Lecture 01] Introduction to Programming & Different Programming Languages[ITP - Lecture 01] Introduction to Programming & Different Programming Languages
[ITP - Lecture 01] Introduction to Programming & Different Programming Languages
[OOP - Lec 16,17] Objects as Function Parameter and ReturnType por Muhammad Hammad Waseem
[OOP - Lec 16,17] Objects as Function Parameter and ReturnType[OOP - Lec 16,17] Objects as Function Parameter and ReturnType
[OOP - Lec 16,17] Objects as Function Parameter and ReturnType

Último

Six Sigma Concept by Sahil Srivastava.pptx por
Six Sigma Concept by Sahil Srivastava.pptxSix Sigma Concept by Sahil Srivastava.pptx
Six Sigma Concept by Sahil Srivastava.pptxSahil Srivastava
51 vistas11 diapositivas
EILO EXCURSION PROGRAMME 2023 por
EILO EXCURSION PROGRAMME 2023EILO EXCURSION PROGRAMME 2023
EILO EXCURSION PROGRAMME 2023info33492
208 vistas40 diapositivas
Gross Anatomy of the Liver por
Gross Anatomy of the LiverGross Anatomy of the Liver
Gross Anatomy of the Liverobaje godwin sunday
89 vistas12 diapositivas
JRN 362 - Lecture Twenty-Three (Epilogue) por
JRN 362 - Lecture Twenty-Three (Epilogue)JRN 362 - Lecture Twenty-Three (Epilogue)
JRN 362 - Lecture Twenty-Three (Epilogue)Rich Hanley
43 vistas57 diapositivas
11.30.23A Poverty and Inequality in America.pptx por
11.30.23A Poverty and Inequality in America.pptx11.30.23A Poverty and Inequality in America.pptx
11.30.23A Poverty and Inequality in America.pptxmary850239
181 vistas18 diapositivas
Interaction of microorganisms with vascular plants.pptx por
Interaction of microorganisms with vascular plants.pptxInteraction of microorganisms with vascular plants.pptx
Interaction of microorganisms with vascular plants.pptxMicrobiologyMicro
58 vistas33 diapositivas

Último(20)

Six Sigma Concept by Sahil Srivastava.pptx por Sahil Srivastava
Six Sigma Concept by Sahil Srivastava.pptxSix Sigma Concept by Sahil Srivastava.pptx
Six Sigma Concept by Sahil Srivastava.pptx
Sahil Srivastava51 vistas
EILO EXCURSION PROGRAMME 2023 por info33492
EILO EXCURSION PROGRAMME 2023EILO EXCURSION PROGRAMME 2023
EILO EXCURSION PROGRAMME 2023
info33492208 vistas
JRN 362 - Lecture Twenty-Three (Epilogue) por Rich Hanley
JRN 362 - Lecture Twenty-Three (Epilogue)JRN 362 - Lecture Twenty-Three (Epilogue)
JRN 362 - Lecture Twenty-Three (Epilogue)
Rich Hanley43 vistas
11.30.23A Poverty and Inequality in America.pptx por mary850239
11.30.23A Poverty and Inequality in America.pptx11.30.23A Poverty and Inequality in America.pptx
11.30.23A Poverty and Inequality in America.pptx
mary850239181 vistas
Interaction of microorganisms with vascular plants.pptx por MicrobiologyMicro
Interaction of microorganisms with vascular plants.pptxInteraction of microorganisms with vascular plants.pptx
Interaction of microorganisms with vascular plants.pptx
MicrobiologyMicro58 vistas
The Future of Micro-credentials: Is Small Really Beautiful? por Mark Brown
The Future of Micro-credentials:  Is Small Really Beautiful?The Future of Micro-credentials:  Is Small Really Beautiful?
The Future of Micro-credentials: Is Small Really Beautiful?
Mark Brown102 vistas
What is Digital Transformation? por Mark Brown
What is Digital Transformation?What is Digital Transformation?
What is Digital Transformation?
Mark Brown41 vistas
Career Building in AI - Technologies, Trends and Opportunities por WebStackAcademy
Career Building in AI - Technologies, Trends and OpportunitiesCareer Building in AI - Technologies, Trends and Opportunities
Career Building in AI - Technologies, Trends and Opportunities
WebStackAcademy47 vistas
Introduction to AERO Supply Chain - #BEAERO Trainning program por Guennoun Wajih
Introduction to AERO Supply Chain  - #BEAERO Trainning programIntroduction to AERO Supply Chain  - #BEAERO Trainning program
Introduction to AERO Supply Chain - #BEAERO Trainning program
Guennoun Wajih123 vistas
Education of marginalized and socially disadvantages segments.pptx por GarimaBhati5
Education of marginalized and socially disadvantages segments.pptxEducation of marginalized and socially disadvantages segments.pptx
Education of marginalized and socially disadvantages segments.pptx
GarimaBhati547 vistas
Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf por TechSoup
 Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf
Ask The Expert! Nonprofit Website Tools, Tips, and Technology.pdf
TechSoup 62 vistas
Payment Integration using Braintree Connector | MuleSoft Mysore Meetup #37 por MysoreMuleSoftMeetup
Payment Integration using Braintree Connector | MuleSoft Mysore Meetup #37Payment Integration using Braintree Connector | MuleSoft Mysore Meetup #37
Payment Integration using Braintree Connector | MuleSoft Mysore Meetup #37
Nelson_RecordStore.pdf por BrynNelson5
Nelson_RecordStore.pdfNelson_RecordStore.pdf
Nelson_RecordStore.pdf
BrynNelson550 vistas

[ITP - Lecture 17] Strings in C/C++

  • 1. Strings Intro to Programming MUHAMMAD HAMMAD WASEEM 1 What are Strings? The way a group of integers can be stored in an integer array, similarly a group of characters can be stored in a character array. Character arrays are many a time also called strings. Many languages internally treat strings as character arrays, but somehow conceal this fact from the programmer. Character arrays or strings are used by programming languages to manipulate text such as words and sentences. A string constant is a one-dimensional array of characters terminated by a null ( ‘0’ ). For example, char name[ ] = { 'H', 'A', 'E', 'S', 'L', 'E', 'R', '0' } ; Each character in the array occupies one byte of memory and the last character is always ‘0’. What character is this? It looks like two characters, but it is actually only one character, with the indicating that what follows it is something special. ‘0’ is called null character. Note that ‘0’ and ‘0’ are not same. ASCII value of ‘0’ is 0, whereas ASCII value of ‘0’ is 48. Figure 9.1 shows the way a character array is stored in memory. Note that the elements of the character array are stored in contiguous memory locations. The terminating null (‘0’) is important, because it is the only way the functions that work with a string can know where the string ends. In fact, a string not terminated by a ‘0’ is not really a string, but merely a collection of characters. C concedes the fact that you would use strings very often and hence provides a shortcut for initializing strings. For example, the string used above can also be initialized as, char name[ ] = "HAESLER" ; Note that, in this declaration ‘0’ is not necessary. C inserts the null character automatically. /* Program to demonstrate printing of a string */ main( ) { char name[ ] = "Klinsman" ; int i = 0 ; while ( i <= 7 ) { printf ( "%c", name[i] ) ; i++ ; } } And here is the output... Klinsman We have initialized a character array, and then printed out the elements of this array within a while loop. Can we write the while loop without using the final value 7? We can; because we know that each character array always ends with a ‘0’. Following program illustrates this. main( ) { char name[ ] = "Klinsman" ;
  • 2. Strings Intro to Programming MUHAMMAD HAMMAD WASEEM 2 int i = 0 ; while ( name[i] != `0' ) { printf ( "%c", name[i] ) ; i++ ; } } And here is the output... Klinsman Even though there are so many ways (as shown above) to refer to the elements of a character array, rarely is any one of them used. This is because printf( ) function has got a sweet and simple way of doing it, as shown below. Note that printf( ) doesn’t print the ‘0’. main( ) { char name[ ] = "Klinsman" ; printf ( "%s", name ) ; } The %s used in printf( ) is a format specification for printing out a string. The same specification can be used to receive a string from the keyboard, as shown below. main( ) { char name[25] ; printf ( "Enter your name " ) ; scanf ( "%s", name ) ; printf ( "Hello %s!", name ) ; } And here is a sample run of the program... Enter your name Debashish Hello Debashish! Note that the declaration char name[25] sets aside 25 bytes under the array name[ ], whereas the scanf( ) function fills in the characters typed at keyboard into this array until the enter key is hit. Once enter is hit, scanf( ) places a ‘0’ in the array. Naturally, we should pass the base address of the array to the scanf( ) function. While entering the string using scanf( ) we must be cautious about two things: a) The length of the string should not exceed the dimension of the character array. This is because the C compiler doesn’t perform bounds checking on character arrays. Hence, if you carelessly exceed the bounds there is always a danger of overwriting something important, and in that event, you would have nobody to blame but yourselves. b) scanf( ) is not capable of receiving multi-word strings. Therefore names such as ‘Debashish Roy’ would be unacceptable. The way to get around this limitation is by using the function gets( ). The usage of functions gets( ) and its counterpart puts( ) is shown below. main( ) { char name[25] ;
  • 3. Strings Intro to Programming MUHAMMAD HAMMAD WASEEM 3 printf ( "Enter your full name " ) ; gets ( name ) ; puts ( "Hello!" ) ; puts ( name ) ; } And here is the output... Enter your name Debashish Roy Hello! Debashish Roy Pointers and Strings Suppose we wish to store “Hello”. We may either store it in a string or we may ask the C compiler to store it at some location in memory and assign the address of the string in a char pointer. This is shown below: char str[ ] = "Hello" ; char *p = "Hello" ; There is a subtle difference in usage of these two forms. For example, we cannot assign a string to another, whereas, we can assign a char pointer to another char pointer. This is shown in the following program. main( ) { char str1[ ] = "Hello" ; char str2[10] ; char *s = "Good Morning" ; char *q ; str2 = str1 ; /* error */ q = s ; /* works */ } Also, once a string has been defined it cannot be initialized to another set of characters. Unlike strings, such an operation is perfectly valid with char pointers. main( ) { char str1[ ] = "Hello" ; char *p = "Hello" ; str1 = "Bye" ; /* error */ p = "Bye" ; /* works */ } Standard Library String Functions With every C compiler a large set of useful string handling library functions are provided. Following table show the most commonly used functions along with their purpose. Function Use strlen Finds length of a string strlwr Converts a string to lowercase
  • 4. Strings Intro to Programming MUHAMMAD HAMMAD WASEEM 4 strupr Converts a string to uppercase strcat Appends one string at the end of another strncat Appends first n characters of a string at the end of another strcpy Copies a string into another strncpy Copies first n characters of one string into another strcmp Compares two strings strncmp Compares first n characters of two strings strcmpi Compares two strings without regard to case ("i" denotes that this function ignores case) stricmp Compares two strings without regard to case (identical to strcmpi) strnicmp Compares first n characters of two strings without regard to case strdup Duplicates a string strchr Finds first occurrence of a given character in a string strrchr Finds last occurrence of a given character in a string strstr Finds first occurrence of a given string in another string strset Sets all characters of string to a given character strnset Sets first n characters of a string to a given character strrev Reverses string Out of the above list we shall discuss the functions strlen( ), strcpy( ), strcat( ) and strcmp( ), since these are the most commonly used functions. This will also illustrate how the library functions in general handle strings. strlen( ) This function counts the number of characters present in a string. Its usage is illustrated following. main( ) { char arr[ ] = "Bamboozled" ; int len1, len2 ; len1 = strlen ( arr ) ; len2 = strlen ( "Humpty Dumpty" ) ; printf ( "nstring = %s length = %d", arr, len1 ) ; printf ( "nstring = %s length = %d", "Humpty Dumpty", len2 ) ; } The output would be... string = Bamboozled length = 10 string = Humpty Dumpty length = 13 Note that in the first call to the function strlen( ), we are passing the base address of the string, and the function in turn returns the length of the string. While calculating the length it doesn’t count ‘0’. Even in the second call, len2 = strlen ( "Humpty Dumpty" ) ; what gets passed to strlen( ) is the address of the string and not the string itself. strcpy( ) This function copies the contents of one string into another. The base addresses of the source and target strings should be supplied to this function. Here is an example of strcpy( ) in action...
  • 5. Strings Intro to Programming MUHAMMAD HAMMAD WASEEM 5 main( ) { char source[ ] = "Sayonara" ; char target[20] ; strcpy ( target, source ) ; printf ( "nsource string = %s", source ) ; printf ( "ntarget string = %s", target ) ; } And here is the output... source string = Sayonara target string = Sayonara strcat( ) This function concatenates the source string at the end of the target string. For example, “Bombay” and “Nagpur” on concatenation would result into a string “BombayNagpur”. Here is an example of strcat( ) at work. main( ) { char source[ ] = "Folks!" ; char target[30] = "Hello" ; strcat ( target, source ) ; printf ( "nsource string = %s", source ) ; printf ( "ntarget string = %s", target ) ; } And here is the output... source string = Folks! target string = HelloFolks! strcmp( ) This is a function which compares two strings to find out whether they are same or different. The two strings are compared character by character until there is a mismatch or end of one of the strings is reached, whichever occurs first. If the two strings are identical, strcmp( ) returns a value zero. If they’re not, it returns the numeric difference between the ASCII values of the first non-matching pairs of characters. Here is a program which puts strcmp( ) in action. main( ) { char string1[ ] = "Jerry" ; char string2[ ] = "Ferry" ; int i, j, k ; i = strcmp ( string1, "Jerry" ) ; j = strcmp ( string1, string2 ) ; k = strcmp ( string1, "Jerry boy" ) ; printf ( "n%d %d %d", i, j, k ) ; } And here is the output... 0 4 -32