0% found this document useful (0 votes)
22 views

Strings

STRINGS IN C PROGRAMMING LANGAUGE
Copyright
© © All Rights Reserved
Available Formats
Download as PDF or read online on Scribd
0% found this document useful (0 votes)
22 views

Strings

STRINGS IN C PROGRAMMING LANGAUGE
Copyright
© © All Rights Reserved
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 24
Strings © A string is a sequence of characters treated as a group. Any group of characters defined between double quotation marks is a string constant. © We have already used some string literals: © “filename” © “output string” © Character strings are often used to build meaningful and readable programs. Strings are important in many programming contexts: © names © other objects (numbers, identifiers, etc.) © Operations on strings include: Reading and writing strings, combining strings together, copying one string to another, comparing strings for equality, extracting a portion of a string. Outline Strings Representation in C String Literals String Variables String Input/Output printf, scanf, gets, fgets, puts, fputs String Functions strlen, strepy, strnepy, stremp, strncmp, streat, strncat, strchr, strrchr, strstr, strspn, strespn, strtok Reading from/Printing to Strings sprintf, sscanf y Strings in C © No explicit type, instead strings are maintained as arrays of characters © Representing strings in C © stored in arrays of characters © array can be of any length © end of string is indicated by a delimiter, the zero character ‘\0” Ni A) Ste yi pm yg il String Literals © String literal values are represented by sequences of characters between double quotes (“‘) © Examples e - empty string © “hello” ® “a” versus ‘a’ © ‘a’ is a single character value (stored in | byte) as the ASCII value for a © “a” is an array with two characters, the first is a, the second is the character value \0 Duplicate String Literals ® Each string literal in a C program is stored at a different location ® So even if the string literals contain the same string, they are not equal (in the == sense) © Example: © char string1[6] = “hello”; © char string2[6] = “hello”; © but string] does not equal string? (they are stored at different locations) Bacerine and initializing String Variables © Allocate an array of a size large enough to hold the string (plus | extra value for the delimiter) © Char string_name[size]; Example: char city[10]; © Examples (with initialization): char str1[6] = “Hello”; char str2[] = “Hello”; char str4[6] = {*H’,’e’,’l’,’,’0’,’\0"}; © Note, each variable is considered a constant in that the space it is connected to cannot be changed strl = str2; /* not allowable, but we can copy the contents of str2 to str] (more later) */ * When the compiler assigns a character string to a character array it automatically supplies a NULL (\o) character at the end of the string. © We can declare the size much larger than the string size in the initializer. That is the statement: char str [10]=““GOOD”; is permitted. © However the following declaration is illegal. Char str2[3]=“Good”; This will result in compile time error. © We cannot separate the initialization from declaration. i.e. char str3[5]; str3=“Good”; © Similarly, char s1[4]=“abe”; cahr s2[4]; s2=s1; is not allowed. An array name cannot be used as the left operand of the assignment operator. Diny do we 1 ee character?” © A string is not a datatype in C but it is considered a data structure stored in an array. The string is a variable length structure and is stored in a fixed length array. The array size is not always the size of the string and most often it is much larger than the string stored in it. Therefore, the last element of the array need not represent the end of the string. We need some way to determine the end of the string data and the NULL character serves as the “end of string”. Changing String Variables © Can change parts of a string variable char str1[6] = “hello”; str1[0] = ‘y’; /* str1 is now “yello” */ str1[4] = ‘\0’; /* str1 is now “yell” */ © Important to retain delimiter (replacing str1[5] in the original string with something other than ‘\0’ makes a string that does not end) ® Have to stay within limits of array Reading Strings from terminal © Use %s field specification in scanf to read string: © ignores leading white space ® reads characters until next white space encountered © C stores null (\0) char after last non-white space character. © Example: char Name[11]; scanf(“%s”,Name); © ‘&’ is not required before the variable name. The unused locations are filled with garbage. © 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. Ex: scanf(“Yows”, name); a ———— Reading Strings from terminal(cont) © Can use the width value in the field specification to limit the number of characters read: char Name[11]; scanf(“%10s”,Name); ® Remember, you need one space for the \0 © width should be one less than size of array © Strings shorter than the field specification are read normally, but C always stops after reading 10 characters Reading Strings from terminal(cont) © %s and %ws can read strings without white spaces i.e. they cannot be used for reading a text containing more than one word. However we can use the following code to read a line: char line[80]; scanf(“[\n]’”, line); printf(“%s”, line); String Output ® Use %s field specification in printf: characters in string printed until \0 encountered char Name[10] = “Rich”; printf(“|%s|”,Name); /* outputs |Rich| */ © Can use width value to print string in space: printf(“|%10s|”,Name); /* outputs | — Rich] */ ® Use - flag to left justify: printf(“|%-10s|”,Name); /* outputs |Rich —_| */ AFR RAEtiC Gnerstons on characters © Whenever a character constant or character variable is used in an expression, it is automatically converted into an integer value by the system. © Example: x=‘a’; printf(“%d\n”,x); will display 97 on screen which is ASCII value of ‘a’ in lower case. © Ex-2 x=‘z’-1 will assign value 121 to variable x. @Ex-3 ch>=‘A’ && ch<=‘Z’ would test whether the character contained in variable ch is an upper case letter. © Chas a function “atoi” that converts a string of digits into their integer values. It is stored in Ex: number=“1988”; year=atoi(number); Putting strings together © The process of combining two strings together is called concatenation. © String3=string1+string?2; is not valid. © We can combine the strings using the following program: include int main() ct char s1[100], s2[100], i, j; printf("Enter first string: "); scanf("%s", s1); printf("Enter second string: "); scanf("%s", s2); // calculate the length of string s1 // and store it ini for(i = 0; s1[i] !="\0'; ++i); for(j = 0; s2[j] != '\0'; +4j, ++i) { sli] = s2Ui]s sl[i] = '\0'; printf("After concatenation: %s", $1); return 0; } String Copy: #include int main() { char s1[100], s2[100], i; printf("Enter string s1:"); scanf("%s",s1); for(i = 0; s1[i] != { s2[i] = s1 [i]; } s2[i] = '\0'; Hi) printf("String s2: %s", s2); return 0; ASSIGNMENT WAP to compare two strings without using string manipulation functions. ce | String manipulation | The most common functions used from the library are: 1. strlen("name of string") 2. strepy( dest, source) 3. stremp( string], string2 ) 4. strstr( str1, str2 ) strlen( string ) © Declaration and usage of strlen() function © It is one of the most useful functions used from this library, whenever we need the length of the string say "ete" we write it as int len; len = strlen(str1); © len will be the length of the string "str1".(it will include all the spaces and characters in the string except the NULL(‘\0') character. strepy() function © strepy( dest, source) © This function copies the string "source" to string "dest". Declaration © strepy( str2, str1 ); Pe. strl,str2) © This function is used to compare two strings "strl" and "str2". this function returns zero("0") if the two compared strings are equal, else some none zero _ integer. Declaration and usage of stremp() function © stremp( str1 , str2 ); //declaration © if( stremp( str1, str2 )==0) { printf("string %s and string %s are equal\n",str1,str2); } else printf("string %s and string %s are not equal\n" str! ,str2); Return value - if Return value if < 0 then it indicates str1 is less than str2 - if Return value if > 0 then it indicates str2 is less than str1 - if Return value if = 0 then it indicates str1 is equal to str2 strstr(str1, str2) © This library function finds the first occurrence of the substring str2 in the string strl. The terminating '\0' character is not compared. Declaration © strstr( str1, str2); - strl: the main string to be scanned. - str2: the small string to be searched in str]. // let say str2="speed"; //function can also be written as strstr(str1, "speed" ); © This function is very useful in checking whether str2 is a substring of strl or not. Return value This function returns a pointer to the first occurrence in str1 of any of the entire sequence of characters specified in str2, or a NULL pointer if the sequence is not present in str1. Strcat() © Used for string concatenation(joining) © It takes two arguments i.e. 2 strings © Syntax: streat(string1,string2); © After concatenation the resultant string is stored in first string. © Exercise: WAP to input two strings, concatenate it and print the resultant string.

You might also like