• Tidak ada hasil yang ditemukan

PDF LECTURE-07 STRING - Khulna University of Engineering & Technology

N/A
N/A
Protected

Academic year: 2024

Membagikan "PDF LECTURE-07 STRING - Khulna University of Engineering & Technology"

Copied!
52
0
0

Teks penuh

(1)

LECTURE-07

STRING

(2)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 2

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' } ;

(3)

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

(4)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 4

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.

(5)

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

.

(6)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 6

A string is a series of characters treated as a single unit. A string may include letters, digits and various special characters such as +, -, *, / and $.

String literals or string constants in C are written in double quotation marks as follows:

“1000 Main Street”

(7)

• In C language strings are stored in array of char type along with null terminating character ‘\0’ at the end.

• When sizing the string array we need

to add plus one to the actual size of

the string to make space for the null

terminating character, ‘\0’

(8)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 8

Syntax:

char fname[4];

The above statement declares a string called fname that can take up to 3 characters. It can be indexed just as a regular array as well.

fname[]={‘t’,’w’,’o’};

Generalized syntax is:- char str[size];

(9)

when we declare the string in this way, we can store size-1 characters in the array because the last character would be the null character.

For example,

char mesg[10];

can store maximum of 9 characters.

If we want to print a string from a variable, such as four name string above we can do this.

e.g.,

printf(“First name:%s”,fname);

(10)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 10

We can insert more than one variable. Conversion specification %s is used to insert a string and then go to each %s in our string, we are printing.

A string is an array of characters. Hence it can be indexed like an array.

char ourstr[6] = “EED”;

– ourstr[0] is ‘E’

– ourstr[1] is ‘E’

– ourstr[2] is ‘D’

– ourstr[3] is ‘\0’

– ourstr[4] is ‘\0’

– ourstr[5] is ‘\0’

(11)

Strings are actually one-dimensional array of characters terminated by a null character '\0'.

Thus a null-terminated string contains the characters that comprise the string followed by a null. The following declaration and initialization create a string consisting of the word

"Hello". To hold the null character at the end of the array, the size of the character array containing the string is one more than the

(12)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 12

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

If you follow the rule of array initialization, then you can write the above

statement as follows: char greeting[] = "Hello";

(13)

Actually, you do not place the null character at the end of a string constant. The C compiler automatically places the '\0' at the end of the string when it initializes the array.

Let us try to print the above mentioned string:

int main () {

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

printf("Greeting message: %s\n", greeting );

(14)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 14

When the above code is compiled and executed, it produces the following result:

Greeting message: Hello

Common Functions in String

(15)

C supports a wide range of functions that manipulate null-terminated strings:

(16)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 16

(17)

The following example uses some of the above-mentioned functions:

#include <stdio.h>

#include <string.h>

main () {

char str1[12] = "Hello";

char str2[12] = "World";

char str3[12];

int len ;

(18)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 18

strcpy(str3, str1);

printf("strcpy( str3, str1) : %s\n", str3 );

/* concatenates str1 and str2 */

strcat( str1, str2);

printf("strcat( str1, str2): %s\n", str1 );

/* total length of str1 after concatenation */

len = strlen(str1);

printf("strlen(str1) : %d\n", len );

return 0;

}

(19)

When the above code is compiled and executed, it produces the following result:

strcpy( str3, str1) : Hello

strcat( str1, str2): HelloWorld

strlen(str1) : 10

(20)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 20

Reading strings:

Strings can be read from the user by using three ways;

1. Using scanf() function 2. Using gets() function

3. Using getchar(), getch(), or getche() function repeatedly

If we declare a string by writing

char city[100];

then city can be read from the user by using three ways mentioned above.

(21)

The string can be read using scanf() by writing scanf(“%s”,city);

Although the syntax of scanf() function is well known and easy to use, the main pitfall with this function is that it terminates as soon as it finds a blank space. For example, if the user enters Hello World, then str will contain only Hello. This is because the moment a blank space is encountered, the string is terminated by the scanf() function.

(22)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 22

Example:

char str[10];

printf(“Enter a string\n”);

scanf(“%s”,str);

The next method of reading a string a

string is by using gets() function. The string

can be read by writing

(23)

gets(str);

gets() is a function that overcomes the drawbacks of scanf(). The gets() function takes the starting address of the string which will hold the input. The string inputted using gets() is automatically terminated with a null character.

Example:

char str[10];

printf(“Enter a string\n”);

(24)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 24

The string can also be read by calling the getchar() repeatedly to read a sequence of single characters (unless a terminating character is encountered) and simultaneously storing it in a character array as follows:

int i=0;

char str[10],ch;

getchar(ch);

while(ch!=’\0’) {

str[i]=ch;

i++;

getch(ch); } str[i]=’\0’;

(25)

Writing string

The string can be displayed on screen using three ways:

1. Using printf() function 2. Using puts() function

3. Using putchar() function repeatedly

(26)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 26

The string can be displayed using pintf() by writing printf(“%s”,str);

We can use width and precision specification along with %s. The width specifies the minimum output field width and the precision specifies the maximum number of characters to be displayed.

Example:

printf(“%5.3s”,str);

this statement would print only the first three characters in a total field of five charaters; also these three characters are right justified in the allocated width.

(27)

The next method of writing a string is by using the puts() function. The string can be displayed by writing:

puts(str);

It terminates the line with a newline character (‘\n’).

Finally the string can be written by calling the putchar( ) function repeatedly to print a sequence of single characters.

(28)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 28

int i=0;

char str[10];

while(str[i]!=’\0’) {

putchar(str[i]); // print the character on the screen

i++;

}

(29)

Example: Read and display a string

#include<stdio.h>

#include<conio.h>

void main() {

char str[20];

printf(“\n Enter a string:\n”);

gets(str);

printf(“The string is:\n”);

puts(str);

getch();

(30)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 30

Output:

Enter a string: SDV RGD The string is: SDV RGD

(31)

strcpy():

It is used to copy one string to another string.

The content of the second string is copied to the content of the first string.

Syntax:

strcpy (string 1, string 2);

(32)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 32

Example:

char mystr[10];

mystr = “Hello”; // Error! Illegal !!!

Because we are assigning the value to mystr which is not possible in case of a string. We can only use "=" at declarations of C-String.

strcpy(mystr, “Hello”);

It sets value of mystr equal to “Hello”.

(33)

printf ("Strings are NOT the same.");

else

printf( "Strings are the same.");

Here it will check the ASCII value of H and

G i.e, 72 and 71 and return the diference

1

.

(34)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 34

strcmp():

It is used to compare the contents of the two strings. If any mismatch occurs then it results the difference of ASCII values between the first occurrences of 2 different characters.

Syntax:

int strcmp(string 1, string 2);

Example:

char mystr_a[10] = “Hello”;

char mystr_b[10] = “Goodbye”;

mystr_a == mystr_b; // NOT allowed! The correct way is

if (strcmp(mystr_a, mystr_b ))

(35)

strcat():

It is used to concatenate i.e, combine the content of two strings.

Syntax:

strcat(string 1, string 2);

Example:

char fname[30]={“bob”};

char lname[]={“by”};

printf(“%s”, strcat(fname,lname));

Output:

bobby.

(36)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 36

strlen():

It is used to return the length of a string.

Syntax:

int strlen(string);

Example:

char fname[30]={“bob”}; int length=strlen(fname);

It will return 3

(37)

strchr():

It is used to find a character in the string and returns the index of occurrence of the character for the first time in the string.

Syntax:

strchr(cstr);

Example:

char mystr[] = "This is a simple string";

char pch = strchr(mystr,‘s’);

The output of pch is

(38)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 38

strstr():

It is used to return the existence of one string inside another string and it results the starting index of the string.

Syntax:

strstr(cstr1, cstr2);

Example:

Char mystr[]="This is a simple string";

char pch = strstr(mystr, “simple”);

here pch will point to mystr[10]

(39)

More on Strings

In what way are character arrays different than numeric arrays? Can elements in a character array be accessed in the same way as the elements of a numeric array? Do I need to take any special care of ‘\0’? Why numeric arrays don’t end with a ‘\0’? Declaring strings is okay, but how do I manipulate them? Questions galore!! Well, let us settle some of these issues right away with the help of sample programs.

(40)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 40

And here is the output...

Klinsman

(41)

No big deal. 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.

(42)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 42

(43)

This program doesn’t rely on the length of the string (number of characters in it) to print out its contents and hence is definitely more general than the earlier one. Here is another version of the same program;

this one uses a pointer to access the array elements.

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

(44)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 44

The same specification can be used to receive a string from the keyboard, as shown below

(45)

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.

(46)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 46

While entering the string using scanf( ) we must be cautious about two things:

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.

(47)

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.

(48)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 48

(49)

The program and the output are self- explanatory except for the fact that, puts( ) can display only one string at a time (hence the use of two puts( ) in the program above). Also, on displaying a string, unlike printf( ), puts( ) places the cursor on the next line. Though gets( ) is capable of receiving only one string at a time, the plus point with gets( ) is that it can receive a multi-word string.

(50)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 50

Standard Library String Functions

With every C compiler a large set of useful string handling library functions are provided. The following figure lists the more commonly used functions along with their purpose.

(51)
(52)

PINGKI DATTA, LECTURER, DEPARTMENT OF

CIVIL ENGINEERING, KUET. 52

Thanks to All

SEE YOU IN

NEXT CLASS.

Referensi

Dokumen terkait

Engineering 1st year 2nd Term Regular Examination, 2016 Department of Electrical and Electronic Engineering EE 1203 Electrical Circuit and Filter Design Time: 3 hours Full Marks:

Engineering 3rd Year 2°d Term Examination, 2018 Department of Electronics and Communication Engineering ECE 3203 · Digital Signal Processing TIME: 3 hours· FULL MARKS: 210

Briefly explain different types of Doppler ultrasound 14 imagmg.. b What is ultrasound

[r]

Timetable or Work-plan for the Proposed Study Instructions: You should include an outline of the various stages and corresponding timelines for developing and implementing the

Simul Hasan

Large grains are preferred to high permeability values because of the contribution of the domain wall motion Belled et al., 2000; Nakamura, 1997 studied the magnetic properties of

We also show that in a relatively complemented lattice L with 0, if every standard ideal of L is generated by a finite number of standard elements, then the congruence lattice C L is