2.6 Strings

A string is a continuous sequence of characters terminated by '\0', the null character. The length of a string is considered to be the number of characters excluding the terminating null character.

Basic of strings

string is a continuous sequence of characters terminated by ‘\0’, the null character. The length of a string is considered to be the number of characters excluding the terminating null character. There is no string type in C, and consequently there are no operators that accept strings as operands.

Instead, strings are stored in arrays whose elements have the type char or wchar_t. Strings of wide characters that is, characters of the type wchar_tare also called wide strings. The C standard library provides numerous functions to perform basic operations on strings, such as comparing, copying, and concatenating them.

Declarations and Uses of Strings

You can initialize arrays of char or wchar_t using string literals. For example, the following two array definitions are equivalent:

char str1[30] = "Let's go";     // String length: 8; array length: 30.

char str1[30] = { 'L', 'e', 't', '\'', 's',' ', 'g', 'o', '\0' };

An array holding a string must always be at least one element longer than the string length to accommodate the terminating null character. Thus the array str1 can store strings up to a maximum length of 29. It would be a mistake to define the array with length 8 rather than 30, because then it wouldn’t contain the terminating null character.

If you define a character array without an explicit length and initialize it with a string literal, the array created is one element longer than the string length. An Example

char str2[ ] = " to London!";// String length: 11 (note leading space);
                              // array length: 12.

The following statement uses the standard function strcat() to append the string in str2 to the string in str1. The array str1 must be large enough to hold all the characters in the concatenated string.

#include <string.h>

char str1[30] = "Let's go";
char str2[ ] = " to London!";

/* ... */

strcat( str1, str2 );
puts( str1 );

The output printed by the puts() call is the new content of the array str1:

Let’s go to London!

The names str1 and str2 are pointers to the first character of the string stored in each array. Such a pointer is called a pointer to a string, or a string pointer for short. String manipulation functions such as strcat() and puts() receive the beginning addresses of strings as their arguments. Such functions generally process a string character by character until they reach the terminator, ‘\0’. The function in is one possible implementation of the standard function strcat(). It uses pointers to step through the strings referenced by its arguments.

Built-in Functions for Character and String Processing

Character Processing Functions

The standard library provides a number of functions to classify characters and to perform conversions on them. The header ctype.h declares such functions for byte characters, with character codes from 0 to 255.

The results of these functions, except for isdigit() and isxdigit(), depends on the current locale setting for the locale category LC_CTYPE. You can query or change the locale using the setlocale() function.

Character Classification Functions

The functions listed in Table test whether a character belongs to a certain category. Their return value is nonzero, or true, if the argument is a character code in the given category.

Character classification functions
Category Functions
Letters isalpha( )
Lowercase letters islower( )
Uppercase letters isupper( )
Decimal digits isdigit( )
Hexadecimal digits isxdigit( )
Letters and decimal digits isalnum( )
Printable characters (including whitespace) isprint( )
Printable, non-whitespace characters isgraph( )
Whitespace characters isspace( )
Whitespace characters that separate words in a line of text isblank( )
Punctuation marks ispunct( )
Control characters iscntrl( )

The functions isgraph() and iswgraph() behave differently if the execution character set contains other byte-coded, printable, whitespace characters (that is, whitespace characters which are not control characters) in addition to the space character (‘ ‘). In that case, iswgraph() returns false for all such printable whitespace characters, while isgraph() returns false only for the space character (‘ ‘).

Case Mapping Functions

The functions listed in Table yield the uppercase letter that corresponds to a given lowercase letter, and vice versa. All other argument values are returned unchanged.

Character conversion functions
Conversion Functions in ctype.h
Upper- to lowercase tolower( )
Lower- to uppercase toupper( )
String Processing Functions

string is a continuous sequence of characters terminated by ‘\0’, the string terminator character. The length of a string is considered to be the number of characters before the string terminator. Strings are stored in arrays whose elements have the type char or wchar_t. Strings of wide characters that is, characters of the type wchar_tare also called wide strings.

C does not have a basic type for strings, and hence has no operators to concatenate, compare, or assign values to strings. Instead, the standard library provides numerous functions, listed in

Table to perform these and other operations with strings. The header string.h declares the functions for conventional strings of char. The names of these functions begin with str.

Like any other array, a string that occurs in an expression is implicitly converted into a pointer to its first element. Thus when you pass a string as an argument to a function, the function receives only a pointer to the first character, and can determine the length of the string only by the position of the string terminator character.

String-processing functions
Purpose Functions
Find the length of a string. strlen( )
Copy a string. strcpy( ), strncpy( )
Concatenate strings. strcat( ), strncat( )
Compare strings. strcmp( ), strncmp( ), strcoll( )
Transform a string so that a comparison of two transformed strings using strcmp( ) yields the same result as a comparison of the original strings using the locale-sensitive function strcoll( ). strxfrm( )
In a string, find:
– The first or last occurrence of a given character strchr( ), strrchr( )
– The first occurrence of another string strstr( )
– The first occurrence of any of a given set of characters strcspn( ), strpbrk( )
– The first character that is not a member of a given set strspn( )
Parse a string into tokens strtok( )
#include <stdio.h>
#include <conio.h>
#include <string.h>	// You must declare the library string.h  
// to use functions strcpy, strcmp...
void main()
{
	char str1[10] = “abc”;
	char str2[10] = “def”;
	clrscr();
	printf(“ str1: %s”,str1);
	printf(“\n str2: %s”,str2);
	printf(“\n strcmp(str1,str2) = %d”,strcmp(str1,str2));
	printf(“\n strcat(str1,str2) = %s”,strcat(str1,str2));
	printf(“\n str1: %s”,str1);
	printf(“\n str2: %s”,str2);
	printf(“\n strcpy(str1,str2) = %s”,strcpy(str1,str2));
	printf(“\n str1: %s”,str1);
	printf(“\n str2: %s”,str2);
	strcpy(str1,”ab”);
	strcpy(str2,”abc”);
	printf(“\n strcmp(str1,str2) = %d”,strcmp(str1,str2));
	getch();
}

here is the sample session with the above program

 str1: abc
 str2: def
 strcmp(str1,str2) = -3
 strcat(str1,str2) = abcdef
 str1: abcdef
 str2: def
 strcpy(str1,str2) = def
 str1: def
 str2: def
 strcmp(str1,str2) = -3
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s