SlideShare a Scribd company logo
Programming in C
Lecture 05
By-
Jesmin Akhter
Associate Professor, IIT, Jahangirnagar University
Chapter 08
Character Arrays and Strings
2
INTRODUCTION
• A string is a sequence of characters that is treated as a single data
item. Any group of characters (exce pt double quote Sign) defined
between double quotation marks is a string constant. Example:
"Man is obviously made to think. "
• If we want to include a double quote in the string to be printed, then
we may use it ..with a back slash as shown below. ·
“"Man is obviously made to think ,'' said Pascal."
For example,
printf(" " Well Done !" ");
will output the string
"Well Done!''
While the statement
printf(" Well Done !");
Will output the string
Well Done!
3
Character strings are often used to build meaningful
and readable programs. The common operations
performed on character strings include:
• Reading and writing strings .
• Combining strings together.
• Copying one string to another.
• Comparing strings for equality.
• Extracting a portion of a string.
4
INTRODUCTION
DECLARING AND INITIALIZING STRING
VARIABLE
C does not support Strings as a data type. However, it allows us to
represent strings character arrays. In C, therefore, a string variable
is any valid c variable name and is always declared as an array of
characters. The general form of declration of a string variable is:
char string_name[size];
The size determines the number of characters in the string_name,
Some examples are:
char city[10];
char name [30] ;
When the compiler assigns a character string to a character array, it
automatically supplies a null haracter ('0 ') at the end of the string.
Therefore, the size should be equal to maximum number of
Characters in the string plus one.
DECLARING AND INITIALIZING STRING VARIABLE
Like numeric arrays, character arrays may be initialized when they are declred C
C permits a character array td be initialized in either of the following two formats
char city [9] = " NEW YORK ";
char city [9]={‘N,' E','W',' ','Y','O',',R','K', ' 0'};
The reason that city had to be 9 elements long is that the string
NEW YORK contains 8 characters and one element space is provided for the null
terminator.
C also permits us to initialize a character array without specifying the number of
the elements. In such cases, the size of the array will be determined automatically,
based on number of elements initialized.
For example, the statement ·
char string [ ] = {'G','O','O','D'' ;'0'};
defines the array string as a five element array.
DECLARING AND INITIALIZING STRING VARIABLE
We can also declare the size much larger than the string size in the initializer.
That is, the statement
char str[10] = "GOOD";
is permitted . In this case.the computer creates a character array of size 10, places
the value "GOOD" in it, terminates with the null character, and initializes all other
elements to NULL
The storage will look like:
However, the following declaration is illegal.
char str2[3] ="GOOD";
READING STRING FROM TERMINAL
USING SCANF FUNCTION
input function scanf can be used with %s format specification to
read in a string of characters. Example:
char address [10]
scanf(“%s”address);
The problem with the scanf function is that it terminates its input on
the first white space it finds
A white space includes blanks, tabs, carriage returns, form feeds,
and new lines.
if the following line of text is typed in at the terminal,
NEW YORK
Then only the string "NEW" will be read into the array address,
since the blank space after 'NEW' will terminate the reading of
string:
8
The scanf function automatically terminates the string that is read with a null
character the character array should be large enough to hold the input string plus the
null character.
Note that unlike previous scanf calls, in the case of character arrays, the ampersand
(&) is not required before the variable name.
The address array is created in the memory as shown below:
Note that the unused locations are filled with garbage.
If we want to read the entire line. "NEW YORK", then we may use two character
arrays of appropriate sizes. That is,.·
char adrl[5], adr2 [5] ;
scanf ("%s %s”, adr1 , adr2);
with the line of text
NEW YORK
will assign the string "NEW" to adrl and ''YORK" to adr2
9
Example 8.1
Write a program to read a series of words from a terminal using scanf
function
The program shown in Fig.8.1 reads four words and displays them on the
screen. Note that the string 'Oxford Road' is treated as two words while
the string 'Oxford-Road' as one word.
READING A SERIES OF WORDS USING scanf FUNCTION
Program
main( )
{
char word1[40], word2[40], word3[40], word4[40];
printf("Enter text : n");
scanf("%s %s", word1, word2);
scanf("%s", word3);
scanf("%s", word4);
printf("n");
printf("word1 = %snword2 = %sn", word1, word2);
printf("word3 = %snword4 = %sn", word3, word4);
}
10
Output
Enter text :
Oxford Road, London M17ED
word1 = Oxford
word2 = Road,
word3 = London
word4 = M17ED
Enter text :
Oxford-Road, London-M17ED United Kingdom
word1 = Oxford-Road
word2 = London-M17ED
word3 = United
word4 = Kingdom
11
READING STRING FROM TERMINAL
USING SCANF FUNCTION
We can also specify the field width using the form %ws in the
scanf statement for reading a specified number of characters from
the input string Example:
scanf(''%ws ", name);
Here, two things may- happen.
1. The width w is equal to or greater than the number of characters
typed in. The entire string will be stored in the string variable.
2. The width w is less than the number of characters in the string.
The excess characters will be truncated and left unread.
Consider the following statements:
char name [10];
scanf (''%5s", name) ;
12
READING STRING FROM TERMINAL
USING SCANF FUNCTION
The input string RAM will be stored as:
The inpul string KRISHNA will be stored as:
13
Reading a Line of Text
• We have seen just now that scanf with %s or %ws can
read only strings without whitespaces. That is, they cannot be
used for reading a text containing more than one word.
• However, C supports a format specification known as the edit
set conversion code% [. .] that can be used to read a line
containing a variety of characters, including whitespaces.
For example, the program segment
char 1ine [80];
scanf( "%[^ n] ", line);
printf("%s " , line);
Will read a line of input from the keyboard and display the same
on the screen.
14
Using getchar and gets Functions
To read a single character from the terminal, we have used the
function getchar.
We can use this function repeatedly to read successive single
characters from the input and place them into a character array.
Thus, an entire line-of text can be read and stored in an array.
The reading is terminated when the newline character (‘n’) is
entered and the null character is then inserted at the end of the
string. The getchar function call takes the form:
Note that the getchar function has no parameters.
15
Example 8.2
Write a program to read a line of text containing a
series of words from the terminal.
The program shown in Fig.8.2 can read a line of text (upto a
maximum of 80 characters) into the string line using getchar
function. Every time a character is read, it is assigned to its
location in the string line and then tested for newline character.
When the newline character is read (signalling the end of line),
the reading loop is terminated and the newline character is
replaced by the null character to indicate the end of character
string.
When the loop is exited, the value of the index c is one number
higher than the last character position in the string (since it has
been incremented after assigning the new character to the string).
Therefore the index value c-1 gives the position where the null
character is to be stored.
16
PROGRAM TO READ A LINE OF TEXT FROM TERMINAL
#include <stdio.h>
#include <stdlib.h>
int main()
{
char line[81], character;
int c;
c = 0;
printf("Enter text. Press <Return> at endn");
do
{
character = getchar();
line[c] = character;
c++;
}
while(character != 'n');
c = c - 1;
line[c] = '0';
printf("n%sn", line);
return 0;
}
17
Output
Enter text. Press <Return> at end
Programming in C is interesting.
Programming in C is interesting.
Enter text. Press <Return> at end
National Centre for Expert Systems,
Another and more convenient method of reading a string of text containing
whitespaces is to use the library function gets available in the <stdio.h> header
file. This is a simple func-tion with one string parameter and called as under:
gets (str);
str is a string variable declared properly. It reads characters into str from the
keyboard until a new line character is encountered and then appends a null
character to the string.
Unlike scanf, it does not skip whitespaces.
For example the code segment
char 1ine [80];
gets (line);
printf ("%s", line);
reads a line of text from the keyboard and displays it on the screen. The last two
statements may be combined as follows :
printf ("%s", gets (line)) ;
(Be careful not to input more character that can be stored in the string variable
used. Since C does not check array bounds. it may cause problems.)
18
Using getchar and gets Functions
C does not provide operators that work on strings directly. For
instance we cannot assign one string to another directly.
For example, the assignment statements.
string = "ABC";
string l = string2 ;
are not va1id. If we really want to copy the characters in string2
into stringl , we may do so a character-by-character basis.
}
19
Using getchar and gets Functions
Example 8.3
Write a program to copy one string into another and count the number
of characters copied.
The program is shown in Fig.8.3. We use a for loop to copy the
characters contained inside string2 into the string1. The loop is
terminated when the null character is reached. Note that we are again
assigning a null character to the string1.
COPYING ONE STRING INTO ANOTHER
Program
main( )
{
char string1[80], string2[80];
int i;
printf("Enter a string n");
printf("?");
scanf("%s", string2);
for( i=0 ; string2[i] != '0'; i++)
string1[i] = string2[i];
string1[i] = '0';
20
Output
Enter a string
?Manchester
Manchester
Number of characters = 10
Enter a string
?Westminster
WRITING STRINGS TO SCREE
Using printf function
We have used extensively the printf function with %s format to
print strings to screen The format %s can be used to display an
array of characters that is terminated by the null character. For
example, the statement
printf("%s", name);
can be used to display the entire contents of the array name
We can also specify the precision with which the array is
displayed.
The specification
%10.4
Indicates that the first four characters are to be printed in a field
width of 10 columns.
If we include the minus sign in the specification (-%10.4s), the
string will be printed left-justified.
21
Example 8.4
Write a program to store the string "United
Kingdom" in the array country and display the
string under various format specifications.
1. When the field width is less than the length of the string, the entire
string is printed.
2. The integer value on the right side of the decimal point specifies the
number of characters to be printed.
3. When the number of characters to be printed is specified as zero,
nothing is printed.
4. The minus sign in the specification causes the string to be printed
left-justified.
5. The specification % ns prints the first n characters of the string
22
WRITING STRINGS USING %s FORMAT
#include <stdio.h>
#include <stdlib.h>
int main()
{
char country[15] = "United Kingdom";
printf("nn");
printf("*123456789012345*n");
printf(" --------------- n");
printf("%15sn", country);
printf("%5sn", country);
printf("%15.6sn", country);
printf("%-15.6sn", country);
printf("%15.0sn", country);
printf("%.3sn", country);
printf("%sn", country);
printf("---------------- n");
return 0;
}
23
Output
*123456789012345*
--------------------
United Kingdom
United Kingdom
United
Using putchar and puts Functions
Like getchar, C supports another character handling function putchar to output
uses of character variables. It takes the following form:
char ch=‘A’;
putchar (ch);
The function putchar requires one parameter. This statement is equivalent to:
printf(" %c", ch);
We have used putchar function to write characters to the screen. we .
Can use the function repeatedly to output a string of characters stored in an array
Example:
char name [6] = "PARIS"
for (i =0, i<5; i++)
putchar(name[i] ;
putchar ( “n “);
24
Using putchar and puts Functions
Anothr and more convenient way of printing String values is to use the
function clared in the header file <stdio.h>. This is a one-parameter function
and invoked as
puts (str);
where str is a string vriable containing a string value. This prints the value of
the variable str and then moves the cursor to the beginning of the next line on
the example, the program segment.
char 1ine [80];
gets (line);
puts (1ine);
reads a line of text from the keyboard and displays it on the screen. Note that
the syntax is very simple compared to using the scanf and printf statements
25
Example 8.6
Write a program which would print the alphabet set a
to z and A to Z in decimal and character form.
In ASCII character set, the decimal numbers 65 to 90 represent uppercase
alphabets and 97 to 122 represent lowercase alphabets. The values from 91 to 96
are excluded using an if statement in the for loop.
PRINTING ALPHABET SET IN DECIMAL AND CHARACTER FORM
Program
main()
{
char c;
printf("nn");
for( c = 65 ; c <= 122 ; c = c + 1 )
{
if( c > 90 && c < 97 )
continue;
printf("|%4d - %c ", c, c);
}
printf("|n");
26
Output
| 65 - A | 66 - B | 67 - C | 68 - D | 69 - E | 70 - F
| 71 - G | 72 - H | 73 - I | 74 - J | 75 - K | 76 - L
| 77 - M | 78 - N | 79 - O | 80 - P | 81 - Q | 82 - R
| 83 - S | 84 - T | 85 - U | 86 - V | 87 - W | 88 - X
| 89 - Y | 90 - Z | 97 - a | 98 - b | 99 - c | 100 - d
| 101 - e | 102 - f | 103 - g | 104 - h | 105 - i | 106 - j
| 107 - k | 108 - l | 109 - m | 110 - n | 111 - o | 112 - p
| 113 - q | 114 - r | 115 - s | 116 - t | 117 - u | 118 - v
| 119 - w | 120 - x | 121 - y | 122 - z |
Thank You
27

More Related Content

What's hot (20)

PDF
MANAGING INPUT AND OUTPUT OPERATIONS IN C MRS.SOWMYA JYOTHI.pdf
SowmyaJyothi3
 
PPTX
Strings in c++
Neeru Mittal
 
PPT
Savitch ch 08
Terry Yoast
 
PPT
String & its application
Tech_MX
 
PDF
3 character strings and formatted input output
MomenMostafa
 
PPTX
The string class
Syed Zaid Irshad
 
PPTX
String in programming language in c or c++
Samsil Arefin
 
PPT
14 strings
Rohit Shrivastava
 
PPT
Savitch Ch 08
Terry Yoast
 
PPTX
function, storage class and array and strings
Rai University
 
PDF
05 c++-strings
Kelly Swanson
 
PPT
Strings
Imad Ali
 
PPTX
COm1407: Character & Strings
Hemantha Kulathilake
 
PPT
Operation on string presentation
Aliul Kadir Akib
 
PPTX
Managing I/O & String function in C
Abinaya B
 
PDF
Strings-Computer programming
nmahi96
 
PPTX
C++ string
Dheenadayalan18
 
PDF
POINTERS IN C MRS.SOWMYA JYOTHI.pdf
SowmyaJyothi3
 
DOCX
C UNIT-3 PREPARED BY M V B REDDY
Rajeshkumar Reddy
 
MANAGING INPUT AND OUTPUT OPERATIONS IN C MRS.SOWMYA JYOTHI.pdf
SowmyaJyothi3
 
Strings in c++
Neeru Mittal
 
Savitch ch 08
Terry Yoast
 
String & its application
Tech_MX
 
3 character strings and formatted input output
MomenMostafa
 
The string class
Syed Zaid Irshad
 
String in programming language in c or c++
Samsil Arefin
 
14 strings
Rohit Shrivastava
 
Savitch Ch 08
Terry Yoast
 
function, storage class and array and strings
Rai University
 
05 c++-strings
Kelly Swanson
 
Strings
Imad Ali
 
COm1407: Character & Strings
Hemantha Kulathilake
 
Operation on string presentation
Aliul Kadir Akib
 
Managing I/O & String function in C
Abinaya B
 
Strings-Computer programming
nmahi96
 
C++ string
Dheenadayalan18
 
POINTERS IN C MRS.SOWMYA JYOTHI.pdf
SowmyaJyothi3
 
C UNIT-3 PREPARED BY M V B REDDY
Rajeshkumar Reddy
 

Similar to Lecture 05 2017 (20)

DOCX
Array &strings
UMA PARAMESWARI
 
PPTX
Handling of character strings C programming
Appili Vamsi Krishna
 
PDF
[ITP - Lecture 17] Strings in C/C++
Muhammad Hammad Waseem
 
PPTX
Strings in C - covers string functions
Mohammed Sikander
 
PPTX
Week6_P_String.pptx
OluwafolakeOjo
 
PPTX
Btech i pic u-4 function, storage class and array and strings
Rai University
 
PDF
Functions torage class and array and strings-
aneebkmct
 
PPTX
Mcai pic u 4 function, storage class and array and strings
Rai University
 
PPTX
Diploma ii cfpc u-4 function, storage class and array and strings
Rai University
 
PPTX
Bsc cs i pic u-4 function, storage class and array and strings
Rai University
 
PPTX
Lecture_on_string_manipulation_functions.pptx
ABHISRIVASTAV9
 
PPTX
Character Arrays and strings in c language
mallikavin
 
PPTX
Array,string structures. Best presentation pptx
Kalkaye
 
PDF
Matlab strings
pramodkumar1804
 
PDF
PROBLEM SOLVING USING A PPSC- UNIT -3.pdf
JNTUK KAKINADA
 
PDF
Unit 2
TPLatchoumi
 
PDF
Strings IN C
yndaravind
 
Array &strings
UMA PARAMESWARI
 
Handling of character strings C programming
Appili Vamsi Krishna
 
[ITP - Lecture 17] Strings in C/C++
Muhammad Hammad Waseem
 
Strings in C - covers string functions
Mohammed Sikander
 
Week6_P_String.pptx
OluwafolakeOjo
 
Btech i pic u-4 function, storage class and array and strings
Rai University
 
Functions torage class and array and strings-
aneebkmct
 
Mcai pic u 4 function, storage class and array and strings
Rai University
 
Diploma ii cfpc u-4 function, storage class and array and strings
Rai University
 
Bsc cs i pic u-4 function, storage class and array and strings
Rai University
 
Lecture_on_string_manipulation_functions.pptx
ABHISRIVASTAV9
 
Character Arrays and strings in c language
mallikavin
 
Array,string structures. Best presentation pptx
Kalkaye
 
Matlab strings
pramodkumar1804
 
PROBLEM SOLVING USING A PPSC- UNIT -3.pdf
JNTUK KAKINADA
 
Unit 2
TPLatchoumi
 
Strings IN C
yndaravind
 
Ad

More from Jesmin Akhter (8)

PPTX
Lecture 11
Jesmin Akhter
 
PPTX
Lecture 10
Jesmin Akhter
 
PPTX
Lecture 11
Jesmin Akhter
 
PPTX
Lecture 10
Jesmin Akhter
 
PDF
1605.01126
Jesmin Akhter
 
PPT
Lecture 01 2017
Jesmin Akhter
 
PPTX
Recursion
Jesmin Akhter
 
PPTX
Functions
Jesmin Akhter
 
Lecture 11
Jesmin Akhter
 
Lecture 10
Jesmin Akhter
 
Lecture 11
Jesmin Akhter
 
Lecture 10
Jesmin Akhter
 
1605.01126
Jesmin Akhter
 
Lecture 01 2017
Jesmin Akhter
 
Recursion
Jesmin Akhter
 
Functions
Jesmin Akhter
 
Ad

Recently uploaded (20)

PDF
Antianginal agents, Definition, Classification, MOA.pdf
Prerana Jadhav
 
PDF
BÀI TẬP TEST BỔ TRỢ THEO TỪNG CHỦ ĐỀ CỦA TỪNG UNIT KÈM BÀI TẬP NGHE - TIẾNG A...
Nguyen Thanh Tu Collection
 
PPTX
Digital Professionalism and Interpersonal Competence
rutvikgediya1
 
PPTX
Continental Accounting in Odoo 18 - Odoo Slides
Celine George
 
PPTX
K-Circle-Weekly-Quiz12121212-May2025.pptx
Pankaj Rodey
 
PPTX
YSPH VMOC Special Report - Measles Outbreak Southwest US 7-20-2025.pptx
Yale School of Public Health - The Virtual Medical Operations Center (VMOC)
 
PPTX
20250924 Navigating the Future: How to tell the difference between an emergen...
McGuinness Institute
 
PDF
EXCRETION-STRUCTURE OF NEPHRON,URINE FORMATION
raviralanaresh2
 
PPTX
Basics and rules of probability with real-life uses
ravatkaran694
 
PPTX
Introduction to pediatric nursing in 5th Sem..pptx
AneetaSharma15
 
PDF
The-Invisible-Living-World-Beyond-Our-Naked-Eye chapter 2.pdf/8th science cur...
Sandeep Swamy
 
PPTX
How to Track Skills & Contracts Using Odoo 18 Employee
Celine George
 
PPTX
Electrophysiology_of_Heart. Electrophysiology studies in Cardiovascular syste...
Rajshri Ghogare
 
PPTX
TOP 10 AI TOOLS YOU MUST LEARN TO SURVIVE IN 2025 AND ABOVE
digilearnings.com
 
PPTX
CONCEPT OF CHILD CARE. pptx
AneetaSharma15
 
PDF
My Thoughts On Q&A- A Novel By Vikas Swarup
Niharika
 
PPTX
Cleaning Validation Ppt Pharmaceutical validation
Ms. Ashatai Patil
 
PPTX
Top 10 AI Tools, Like ChatGPT. You Must Learn In 2025
Digilearnings
 
PPTX
HEALTH CARE DELIVERY SYSTEM - UNIT 2 - GNM 3RD YEAR.pptx
Priyanshu Anand
 
PDF
John Keats introduction and list of his important works
vatsalacpr
 
Antianginal agents, Definition, Classification, MOA.pdf
Prerana Jadhav
 
BÀI TẬP TEST BỔ TRỢ THEO TỪNG CHỦ ĐỀ CỦA TỪNG UNIT KÈM BÀI TẬP NGHE - TIẾNG A...
Nguyen Thanh Tu Collection
 
Digital Professionalism and Interpersonal Competence
rutvikgediya1
 
Continental Accounting in Odoo 18 - Odoo Slides
Celine George
 
K-Circle-Weekly-Quiz12121212-May2025.pptx
Pankaj Rodey
 
YSPH VMOC Special Report - Measles Outbreak Southwest US 7-20-2025.pptx
Yale School of Public Health - The Virtual Medical Operations Center (VMOC)
 
20250924 Navigating the Future: How to tell the difference between an emergen...
McGuinness Institute
 
EXCRETION-STRUCTURE OF NEPHRON,URINE FORMATION
raviralanaresh2
 
Basics and rules of probability with real-life uses
ravatkaran694
 
Introduction to pediatric nursing in 5th Sem..pptx
AneetaSharma15
 
The-Invisible-Living-World-Beyond-Our-Naked-Eye chapter 2.pdf/8th science cur...
Sandeep Swamy
 
How to Track Skills & Contracts Using Odoo 18 Employee
Celine George
 
Electrophysiology_of_Heart. Electrophysiology studies in Cardiovascular syste...
Rajshri Ghogare
 
TOP 10 AI TOOLS YOU MUST LEARN TO SURVIVE IN 2025 AND ABOVE
digilearnings.com
 
CONCEPT OF CHILD CARE. pptx
AneetaSharma15
 
My Thoughts On Q&A- A Novel By Vikas Swarup
Niharika
 
Cleaning Validation Ppt Pharmaceutical validation
Ms. Ashatai Patil
 
Top 10 AI Tools, Like ChatGPT. You Must Learn In 2025
Digilearnings
 
HEALTH CARE DELIVERY SYSTEM - UNIT 2 - GNM 3RD YEAR.pptx
Priyanshu Anand
 
John Keats introduction and list of his important works
vatsalacpr
 

Lecture 05 2017

  • 1. Programming in C Lecture 05 By- Jesmin Akhter Associate Professor, IIT, Jahangirnagar University
  • 3. INTRODUCTION • A string is a sequence of characters that is treated as a single data item. Any group of characters (exce pt double quote Sign) defined between double quotation marks is a string constant. Example: "Man is obviously made to think. " • If we want to include a double quote in the string to be printed, then we may use it ..with a back slash as shown below. · “"Man is obviously made to think ,'' said Pascal." For example, printf(" " Well Done !" "); will output the string "Well Done!'' While the statement printf(" Well Done !"); Will output the string Well Done! 3
  • 4. Character strings are often used to build meaningful and readable programs. The common operations performed on character strings include: • Reading and writing strings . • Combining strings together. • Copying one string to another. • Comparing strings for equality. • Extracting a portion of a string. 4 INTRODUCTION
  • 5. DECLARING AND INITIALIZING STRING VARIABLE C does not support Strings as a data type. However, it allows us to represent strings character arrays. In C, therefore, a string variable is any valid c variable name and is always declared as an array of characters. The general form of declration of a string variable is: char string_name[size]; The size determines the number of characters in the string_name, Some examples are: char city[10]; char name [30] ; When the compiler assigns a character string to a character array, it automatically supplies a null haracter ('0 ') at the end of the string. Therefore, the size should be equal to maximum number of Characters in the string plus one.
  • 6. DECLARING AND INITIALIZING STRING VARIABLE Like numeric arrays, character arrays may be initialized when they are declred C C permits a character array td be initialized in either of the following two formats char city [9] = " NEW YORK "; char city [9]={‘N,' E','W',' ','Y','O',',R','K', ' 0'}; The reason that city had to be 9 elements long is that the string NEW YORK contains 8 characters and one element space is provided for the null terminator. C also permits us to initialize a character array without specifying the number of the elements. In such cases, the size of the array will be determined automatically, based on number of elements initialized. For example, the statement · char string [ ] = {'G','O','O','D'' ;'0'}; defines the array string as a five element array.
  • 7. DECLARING AND INITIALIZING STRING VARIABLE We can also declare the size much larger than the string size in the initializer. That is, the statement char str[10] = "GOOD"; is permitted . In this case.the computer creates a character array of size 10, places the value "GOOD" in it, terminates with the null character, and initializes all other elements to NULL The storage will look like: However, the following declaration is illegal. char str2[3] ="GOOD";
  • 8. READING STRING FROM TERMINAL USING SCANF FUNCTION input function scanf can be used with %s format specification to read in a string of characters. Example: char address [10] scanf(“%s”address); The problem with the scanf function is that it terminates its input on the first white space it finds A white space includes blanks, tabs, carriage returns, form feeds, and new lines. if the following line of text is typed in at the terminal, NEW YORK Then only the string "NEW" will be read into the array address, since the blank space after 'NEW' will terminate the reading of string: 8
  • 9. The scanf function automatically terminates the string that is read with a null character the character array should be large enough to hold the input string plus the null character. Note that unlike previous scanf calls, in the case of character arrays, the ampersand (&) is not required before the variable name. The address array is created in the memory as shown below: Note that the unused locations are filled with garbage. If we want to read the entire line. "NEW YORK", then we may use two character arrays of appropriate sizes. That is,.· char adrl[5], adr2 [5] ; scanf ("%s %s”, adr1 , adr2); with the line of text NEW YORK will assign the string "NEW" to adrl and ''YORK" to adr2 9
  • 10. Example 8.1 Write a program to read a series of words from a terminal using scanf function The program shown in Fig.8.1 reads four words and displays them on the screen. Note that the string 'Oxford Road' is treated as two words while the string 'Oxford-Road' as one word. READING A SERIES OF WORDS USING scanf FUNCTION Program main( ) { char word1[40], word2[40], word3[40], word4[40]; printf("Enter text : n"); scanf("%s %s", word1, word2); scanf("%s", word3); scanf("%s", word4); printf("n"); printf("word1 = %snword2 = %sn", word1, word2); printf("word3 = %snword4 = %sn", word3, word4); } 10
  • 11. Output Enter text : Oxford Road, London M17ED word1 = Oxford word2 = Road, word3 = London word4 = M17ED Enter text : Oxford-Road, London-M17ED United Kingdom word1 = Oxford-Road word2 = London-M17ED word3 = United word4 = Kingdom 11
  • 12. READING STRING FROM TERMINAL USING SCANF FUNCTION We can also specify the field width using the form %ws in the scanf statement for reading a specified number of characters from the input string Example: scanf(''%ws ", name); Here, two things may- happen. 1. The width w is equal to or greater than the number of characters typed in. The entire string will be stored in the string variable. 2. The width w is less than the number of characters in the string. The excess characters will be truncated and left unread. Consider the following statements: char name [10]; scanf (''%5s", name) ; 12
  • 13. READING STRING FROM TERMINAL USING SCANF FUNCTION The input string RAM will be stored as: The inpul string KRISHNA will be stored as: 13
  • 14. Reading a Line of Text • We have seen just now that scanf with %s or %ws can read only strings without whitespaces. That is, they cannot be used for reading a text containing more than one word. • However, C supports a format specification known as the edit set conversion code% [. .] that can be used to read a line containing a variety of characters, including whitespaces. For example, the program segment char 1ine [80]; scanf( "%[^ n] ", line); printf("%s " , line); Will read a line of input from the keyboard and display the same on the screen. 14
  • 15. Using getchar and gets Functions To read a single character from the terminal, we have used the function getchar. We can use this function repeatedly to read successive single characters from the input and place them into a character array. Thus, an entire line-of text can be read and stored in an array. The reading is terminated when the newline character (‘n’) is entered and the null character is then inserted at the end of the string. The getchar function call takes the form: Note that the getchar function has no parameters. 15
  • 16. Example 8.2 Write a program to read a line of text containing a series of words from the terminal. The program shown in Fig.8.2 can read a line of text (upto a maximum of 80 characters) into the string line using getchar function. Every time a character is read, it is assigned to its location in the string line and then tested for newline character. When the newline character is read (signalling the end of line), the reading loop is terminated and the newline character is replaced by the null character to indicate the end of character string. When the loop is exited, the value of the index c is one number higher than the last character position in the string (since it has been incremented after assigning the new character to the string). Therefore the index value c-1 gives the position where the null character is to be stored. 16
  • 17. PROGRAM TO READ A LINE OF TEXT FROM TERMINAL #include <stdio.h> #include <stdlib.h> int main() { char line[81], character; int c; c = 0; printf("Enter text. Press <Return> at endn"); do { character = getchar(); line[c] = character; c++; } while(character != 'n'); c = c - 1; line[c] = '0'; printf("n%sn", line); return 0; } 17 Output Enter text. Press <Return> at end Programming in C is interesting. Programming in C is interesting. Enter text. Press <Return> at end National Centre for Expert Systems,
  • 18. Another and more convenient method of reading a string of text containing whitespaces is to use the library function gets available in the <stdio.h> header file. This is a simple func-tion with one string parameter and called as under: gets (str); str is a string variable declared properly. It reads characters into str from the keyboard until a new line character is encountered and then appends a null character to the string. Unlike scanf, it does not skip whitespaces. For example the code segment char 1ine [80]; gets (line); printf ("%s", line); reads a line of text from the keyboard and displays it on the screen. The last two statements may be combined as follows : printf ("%s", gets (line)) ; (Be careful not to input more character that can be stored in the string variable used. Since C does not check array bounds. it may cause problems.) 18 Using getchar and gets Functions
  • 19. C does not provide operators that work on strings directly. For instance we cannot assign one string to another directly. For example, the assignment statements. string = "ABC"; string l = string2 ; are not va1id. If we really want to copy the characters in string2 into stringl , we may do so a character-by-character basis. } 19 Using getchar and gets Functions
  • 20. Example 8.3 Write a program to copy one string into another and count the number of characters copied. The program is shown in Fig.8.3. We use a for loop to copy the characters contained inside string2 into the string1. The loop is terminated when the null character is reached. Note that we are again assigning a null character to the string1. COPYING ONE STRING INTO ANOTHER Program main( ) { char string1[80], string2[80]; int i; printf("Enter a string n"); printf("?"); scanf("%s", string2); for( i=0 ; string2[i] != '0'; i++) string1[i] = string2[i]; string1[i] = '0'; 20 Output Enter a string ?Manchester Manchester Number of characters = 10 Enter a string ?Westminster
  • 21. WRITING STRINGS TO SCREE Using printf function We have used extensively the printf function with %s format to print strings to screen The format %s can be used to display an array of characters that is terminated by the null character. For example, the statement printf("%s", name); can be used to display the entire contents of the array name We can also specify the precision with which the array is displayed. The specification %10.4 Indicates that the first four characters are to be printed in a field width of 10 columns. If we include the minus sign in the specification (-%10.4s), the string will be printed left-justified. 21
  • 22. Example 8.4 Write a program to store the string "United Kingdom" in the array country and display the string under various format specifications. 1. When the field width is less than the length of the string, the entire string is printed. 2. The integer value on the right side of the decimal point specifies the number of characters to be printed. 3. When the number of characters to be printed is specified as zero, nothing is printed. 4. The minus sign in the specification causes the string to be printed left-justified. 5. The specification % ns prints the first n characters of the string 22
  • 23. WRITING STRINGS USING %s FORMAT #include <stdio.h> #include <stdlib.h> int main() { char country[15] = "United Kingdom"; printf("nn"); printf("*123456789012345*n"); printf(" --------------- n"); printf("%15sn", country); printf("%5sn", country); printf("%15.6sn", country); printf("%-15.6sn", country); printf("%15.0sn", country); printf("%.3sn", country); printf("%sn", country); printf("---------------- n"); return 0; } 23 Output *123456789012345* -------------------- United Kingdom United Kingdom United
  • 24. Using putchar and puts Functions Like getchar, C supports another character handling function putchar to output uses of character variables. It takes the following form: char ch=‘A’; putchar (ch); The function putchar requires one parameter. This statement is equivalent to: printf(" %c", ch); We have used putchar function to write characters to the screen. we . Can use the function repeatedly to output a string of characters stored in an array Example: char name [6] = "PARIS" for (i =0, i<5; i++) putchar(name[i] ; putchar ( “n “); 24
  • 25. Using putchar and puts Functions Anothr and more convenient way of printing String values is to use the function clared in the header file <stdio.h>. This is a one-parameter function and invoked as puts (str); where str is a string vriable containing a string value. This prints the value of the variable str and then moves the cursor to the beginning of the next line on the example, the program segment. char 1ine [80]; gets (line); puts (1ine); reads a line of text from the keyboard and displays it on the screen. Note that the syntax is very simple compared to using the scanf and printf statements 25
  • 26. Example 8.6 Write a program which would print the alphabet set a to z and A to Z in decimal and character form. In ASCII character set, the decimal numbers 65 to 90 represent uppercase alphabets and 97 to 122 represent lowercase alphabets. The values from 91 to 96 are excluded using an if statement in the for loop. PRINTING ALPHABET SET IN DECIMAL AND CHARACTER FORM Program main() { char c; printf("nn"); for( c = 65 ; c <= 122 ; c = c + 1 ) { if( c > 90 && c < 97 ) continue; printf("|%4d - %c ", c, c); } printf("|n"); 26 Output | 65 - A | 66 - B | 67 - C | 68 - D | 69 - E | 70 - F | 71 - G | 72 - H | 73 - I | 74 - J | 75 - K | 76 - L | 77 - M | 78 - N | 79 - O | 80 - P | 81 - Q | 82 - R | 83 - S | 84 - T | 85 - U | 86 - V | 87 - W | 88 - X | 89 - Y | 90 - Z | 97 - a | 98 - b | 99 - c | 100 - d | 101 - e | 102 - f | 103 - g | 104 - h | 105 - i | 106 - j | 107 - k | 108 - l | 109 - m | 110 - n | 111 - o | 112 - p | 113 - q | 114 - r | 115 - s | 116 - t | 117 - u | 118 - v | 119 - w | 120 - x | 121 - y | 122 - z |

Editor's Notes

  • #15: We would Very rarely use this method, as C supports an intrinsic string function to do this job