Download C Programming Strings Slides and more Slides C programming in PDF only on Docsity!
CHAPTER 12
STRINGS
INTRODUCTION
- A string is a null-terminated character array. This means that after the last character, a null character (‘\0’) is
stored to signify the end of the character array.
- The general form of declaring a string is
char str[size];
- (^) For example if we write,
char str[] = “HELLO”;
We are declaring a character array with 5 characters namely, H, E, L, L and O. Besides, a null character (‘\0’)
is stored at the end of the string. So, the internal representation of the string becomes- HELLO’\0’. Note that to
store a string of length 5, we need 5 + 1 locations (1 extra for the null character).
The name of the character array (or the string) is a pointer to the beginning of the string.
str[0] 1000 str[1] 1001 str[2] 1002 str[3] 1003 str[4] 1004 str[5] 1005
H
E
L
L
O
\
WRITING STRINGS
The string can be displayed on screen using three ways
- (^) use printf() function
- (^) using puts() function
- (^) using putchar()function repeatedly
The string can be displayed using printf() by writing
printf(“%s”, str);
The string can be displayed by writing
puts(str);
The string can also be written by calling the putchar() repeatedly to print a sequence of single characters
i=0; while(str[i] != '\0) { putchar(str[i]); i++; }*
SUPPRESSING INPUT
- scanf() can be used to read a field without assigning it to any variable. This is done by preceding that field's format code with a *. For example, given:
- (^) scanf("%d*c%d", &hr, &min);
- (^) The time can be read as 9:05 as a pair. Here the colon would be read but not assigned to anything.
- (^) Using a Scanset
- (^) The ANSI standard added the new scanset feature to the C language. A scanset is used to define a set of characters which may be read and assigned to the corresponding string. A scanset is defined by placing the characters inside square brackets prefixed with a %
- int main()
char str[10];
printf("\n Enter string: " );
scanf("%[aeiou]", str );
printf( "The string is : %s", str);
return 0;
- The code will stop accepting character as soon as the user will enter a character that is not a vowel.
- (^) However, if the first character in the set is a ^ (caret symbol), then scanf() will accept any character that is not defined by the scanset. For example, if you write
- (^) scanf("%[^aeiou]", str );
© Oxford University Press 2012. All rights reserved.
ALGORITHM TO CONVERT THE CHARACTERS OF STRING INTO UPPER CASE
Step1: [Initialize] SET I= Step 2: Repeat Step 3 while STR[I] != ‘\0’ Step 3: IF STR[1] > ‘a’ AND STR[I] < ‘z’ SET Upperstr[I] = STR[I] - 32 ELSE SET Upperstr[I] = STR[I] [END OF IF] [END OF LOOP] Step 4: SET Upperstr[I] = ‘\0’ Step 5: EXIT
CONCATENATING TWO STRINGS TO FORM A NEW STRING
- (^) IF S1 and S2 are two strings, then concatenation operation produces a string which contains characters of S1 followed by the characters of S2. ALGORITHM TO CONCATENATE TWO STRINGS 1. Initialize I =0 and J= 2. Repeat step 3 to 4 while I <= LENGTH(str1) (^3) SET new_str[J] = str1[I] (^4) Set I =I+1 and J=J+ [END of step2]
- SET I= (^6) Repeat step 6 to 7 while I <= LENGTH(str2) (^7) SET new_str[J] = str1[I] (^8) Set I =I+1 and J=J+ [END of step5]
- SET new_str[J] = ‘\0’
APPENDING
- (^) Appending one string to another string involves copying the contents of the source string at the end of the destination string. For example, if S1 and S2 are two strings, then appending S1 to S2 means we have to add the contents of S1 to S2. so S1 is the source string and S2 is the destination string. The appending operation would leave the source string S1 unchanged and destination string S2 = S2+S1.
ALGORITHM TO APPEND A STRING TO ANOTHER STRING
Step 1: [Initialize] SET I =0 and J=
Step 2: Repeat Step 3 while Dest_Str[I] != ‘\0’
Step 3: SET I + I + 1
[END OF LOOP]
Step 4: Repeat Step 5 to 7 while Source_Str[J] != ‘\0’
Step 5: Dest_Str[I] = Source_Str[J]
Step 6: SET I = I + 1
Step 7: SET J = J + 1
[END OF LOOP]
Step 8: SET Dest_Str[J] = ‘\0’
Step 9: EXIT
© Oxford University Press 2012. All rights reserved. REVERSING A STRING
- (^) If S1= “HELLO”, then reverse of S1 = “OLLEH”. To reverse a string we just need to swap the first character with the last, second character with the second last character, so on and so forth. ALGORITHM TO REVERSE A STRING Step1: [Initialize] SET I=0, J= Length(STR) Step 2: Repeat Step 3 and 4 while I< Length(STR) Step 3: SWAP( STR(I), STR(J)) Step 4: SET I = I + 1, J = J – 1 [END OF LOOP] Step 5: EXIT EXTRACTING A SUBSTRING FROM LEFT
- (^) In order to extract a substring from the main string we need to copy the content of the string starting from the first position to the nth position where n is the number of characters to be extracted.
- (^) For example, if S1 = “Hello World”, then Substr_Left(S1, 7) = Hello W ALGORITHM TO EXTRACT N CHARCTERS FROM RIGHT OF A STRING Step 1: [Initialize] SET I=0, J = Length(STR) – N + 1 Step 2: Repeat Step 3 while STR[J] != ‘\0’ Step 3: SET Substr[I] = STR[J] Step 4: SET I = I + 1, J = J + 1 [END OF LOOP] Step 5: SET Substr[I] =’\0’
EXTRACTING A SUBSTRING FROM RIGHT OF THE STRING
- (^) In order to extract a substring from the right side of the main string we need to first calculate the position. For example, if S1 = “Hello World” and we have to copy 7 characters starting from the right, then we have to actually start extracting characters from the 5th position. This is calculated by, total number of characters – n + 1.
- (^) For example, if S1 = “Hello World”, then Substr_Right(S1, 7) = o World ALGORITHM TO EXTRACT N CHARCTERS FROM RIGHT OF A STRING Step 1: [Initialize] SET I=0, J = Length(STR) – N + 1 Step 2: Repeat Step 3 while STR[J] != ‘\0’ Step 3: SET Substr[I] = STR[J] Step 4: SET I = I + 1, J = J + 1 [END OF LOOP] Step 5: SET Substr[I] =’\0’ Step 6: EXIT
INSERTION
The insertion operation inserts a string S in the main text, T at the kth position. The general syntax of this operation is: INSERT(text, position, string). For ex, INSERT(“XYZXYZ”, 3, “AAA”) = “XYZAAAXYZ” Algorithm to insert a string in the main text Step 1: [INITIALIZE] SET I=0, J=0 and K= Step 2: Repeat steps 3 to 4 while text[I] != ‘0’ Step 3: IF I = pos, then Repeat while str[K] != ‘\0’ new_str[j] = str[k] SET J=J+ SET K = K+ [END OF INNER LOOP] ELSE new_str[[J] = text[I] SET J = J+ Step 4: SET I = I+ [END OF OUTER LOOP] Step 5: SET new_str[J] = ‘\0’ Step 6: EXIT
INDEXING
- (^) Index operation returns the position in the string where the string pattern first occurs. For example,
- (^) INDEX(“Welcome to the world of programming”, “world”) = 15
- (^) However, if the pattern does not exist in the string, the INDEX function returns 0. Algorithm to find the index of the first occurrence of a string within a given text Step 1: [Initialize] SET I=0 and MAX = LENGTH(text) – LENGTH(str) + Step 2: Repeat Steps 3 to 6 while I <= MAX Step 3: Repeat step 4 for K = 0 To Length(str) Step 4: IF str[K] != text[I + K], then GOTO step 6 [END of inner loop] Step 5: SET INDEX = I. Goto step 8 Step 6: SET I = I+ [END OF OUTER LOOP] Step 7: SET INDEX = - Step 8: EXIT
REPLACEMENT
- (^) Replacement operation is used to replace the pattern P1 by another pattern P2. This is done by writing, REPLACE(text, pattern1, pattern2)
- (^) For example, (“AAABBBCCC”, “BBB”, “X”) = AAAXCCC
- (^) (“AAABBBCCC”, “X”, “YYY”)= AAABBBCC
- (^) Note in the second example there is no change as ‘X’ does not appear in the text. Algorithm to replace a pattern P 1 with another pattern P 2 in the given text TEXT Step 1: [INITIALIZE] SET Pos = INDEX(TEXT, P 1 ) Step 2: SET TEXT = DELETE(TEXT, Pos, LENGTH(P 1 )) Step 3: INSERT(TEXT, Pos, P 2 ) Step 4: EXIT
ARRAY OF STRINGS
- (^) Now suppose that there are 20 students in a class and we need a string that stores names of all the 20 students. How can this be done? Here, we need a string of strings or an array of strings. Such an array of strings would store 20 individual strings. An array of string is declared as, char names[20][30];
- (^) Here, the first index will specify how many strings are needed and the second index specifies the length of every individual string. So here, we allocate space for 20 names where each name can be maximum 30 characters long.
- (^) Let us see the memory representation of an array of strings. If we have an array declared as, char name[5][10] = {“Ram”, “Mohan”, “Shyam”, “Hari”, “Gopal”};
R A M ‘\
M O H A N ‘\
S H Y A M ‘\
H A R I ‘\
G O P A L ‘\
Name[0] Name[1] Name[2] Name[3] Name[4]