C String


The string in C programming language is actually a one-dimensional array of characters which is terminated by a null character '\0'. Thus a null-terminated string contains the characters that comprise the string followed by a null.


Declaring and Initializing a string variables

There are different ways to initialize a character array variable.

Syntax

char name[10]="Hello Wolrd";  //valid character array initialization

char name[7]={'H', 'e', 'l', 'l', 'o', '\0'};  //valid initialization

Example

#include <stdio.h>

int main ()
{
   char name[7]={'H', 'e', 'l', 'l', 'o', '\0'};

   printf("Message: %s\n", name );

   return 0;
}

Output

Message: Hello

String Input and Output

Input function scanf() can be used with %s format specifier to read a string input from the terminal. But there is one problem with scanf() function, it terminates its input on first white space it encounters. Therefore if you try to read an input string "Hello World" using scanf() function, it will only read Hello and terminate after encountering white spaces.

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 white spaces.

#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
 char str[20];
 clrscr();
 printf("Enter a string");
 scanf("%[^\n]",&str);
 printf("%s",str);
 getch();
}

Another method to read character string with white spaces from terminal is gets() function.

 char text[20];
 gets(text);
 printf("%s",text);

String Handling Functions

C language supports a large number of string handling functions that can be used to carry out many of the string manipulations. These functions are packaged in string.h library.

The following are the most commonly used string handling functions.

Function Purpose
strcpy(s1, s2); Copies string s2 into string s1.
strcat(s1, s2); Concatenates string s2 onto the end of string s1.
strlen(s1); Returns the length of string s1.
strcmp(s1, s2); Returns 0 if s1 and s2 are the same; less than 0 if s1<s2; greater than 0 if s1>s2.
strchr(s1, ch); Returns a pointer to the first occurrence of character ch in string s1.
strstr(s1, s2); Returns a pointer to the first occurrence of string s2 in string s1.

Example of string handling functions

#include <stdio.h>
#include <string.h>

int main ()
{
   char str1[12] = "Hello";
   char str2[12] = "World";
   char str3[12];
   int  len ;

   /* copy str1 into str3 */
   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 lenghth of str1 after concatenation */
   len = strlen(str1);
   printf("strlen(str1) :  %d\n", len );

   return 0;
}
Output
strcpy( str3, str1) :  Hello
strcat( str1, str2):   HelloWorld
strlen(str1) :  10

Share this article on