Table of Contents
In C programming, Strings are defined as an array of characters or a sequence of characters terminated with a null character ‘\0
‘. When the compiler encounters a sequence of characters enclosed in the double quotation marks, it appends a null character \0
at the end by default.For example –
char c[]="Nerdy E";
Below is the Memory diagram for the above string –
Declaration of Strings in C
There are two ways to declare a string in c language.
- By char array
- By string literal
By Char Array
Lets take an example –
char ch[10]={‘N’, ‘e’, ‘r’, ‘d’, ‘y’, ‘ ‘, ‘E’, ‘\0’};
While declaring string, size is not mandatory. So we can write the above code as given below:
char ch[]={‘N’, ‘e’, ‘r’, ‘d’, ‘y’, ‘ ‘, ‘E’, ‘\0’};
By string literal
Lets see an example of declaring by string literal –
char ch[]=”Nerdy E”;
In such case, ‘\0’ will be appended at the end of the string by the compiler.
The main difference between Char literal and String literal is that the string literal cannot be reassigned to another set of characters whereas, we can reassign the characters of the array.
Lets see this in a program –
// C program to illustrate strings #include<stdio.h> int main() { // declare and initialize string char str[] = "Nerdy E"; char c[] = "'N','e','r','d','y',' ','E'"; // print string printf("String Array Value is: %s\n",str); printf("Char Array Value is: %s\n",c); return 0; }
What do you think the output would be?
The output for both type will be same.
Output –
String Array Value is: Nerdy E Char Array Value is: Nerdy E
Read Strings from the user
scanf()
In C programming, scanf()
is one of the commonly used function to take input from the user. The scanf() function reads formatted input from the standard input such as keyboards until it encounters whitespace (space, newline, tab, etc.).
Lets take an example to see this –
// C program to read strings #include<stdio.h> int main() { // declaring string char str[50]; // taking input from user printf("Enter a string :"); // reading string scanf("%s",str); // print string printf("The string is %s\n",str); return 0; }
Output:
Enter a string :N_Electronics The string is N_Electronics
Passing Strings to function
In the following example we have a string array variable which is passed to a function.
#include <stdio.h> void displayString(char []); int main(void) { // variables char message[] = "Hello Nerds"; // print the string message displayString(message); return 0; } void displayString(char str[]) { printf("String: %s\n", str); }
Here,
- void is the returns type of the function i.e. it will return nothing.
- displayString is the name of the function.
- message[] is the character array (string).
Output
String: Hello World
Functions in Strings
String functions are used in computer programming languages to manipulate a string or query information about a string (some do both). There are many important string functions defined in “string.h” library. Some of them are given below :
Strlen
It returns the length of the string without including end character (terminating char ‘\0’).
Syntax :
strlen(str1); //returns the length of str1
Strcpy
It copies the string str2 into string str1, including the end character (terminator char ‘\0’).
Syntax :
strcpy(str1, str2);
Strcat
It concatenates two strings and returns the concatenated string.
Syntax :
strcat(str1, str2); //Concatenates string str2 onto the end of string str1.
Lets use all these functions in a program to understand better.
#include <stdio.h> #include <string.h> int main () { char str1[12] = "Nerdy"; char str2[12] = "Electronics"; char str3[20]; 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; }
When the above code is compiled and executed, it produces the following result −
strcpy( str3, str1) : Nerdy strcat( str1, str2): NerdyElectronics strlen(str1) : 16
Explanation:
1. strcpy(str3,str1) gives Nerdy, since str3 is null.
2. strcat(str1,str2) then concatenates both the strings and gives combined result.
3. Finally, strlen(str1) gives the length of str1 ( which consists of the concatenated string )
Strcmp
It compares the two strings and returns an integer value. If both the strings are same (equal) then this function would return 0 otherwise it may return a negative or positive value based on the comparison.
Syntax:
strcmp(str1, str2);
Returns 0 if str1 and str2 are the same;
less than 0 if str1<str2;
greater than 0 if str1>str2.
Lets take an example –
#include <stdio.h> #include <string.h> int main() { char s1[25] = "NerdyElectronics"; char s2[25] = "NerdyElectronics.com"; if (strcmp(s1, s2) ==0) { printf("string 1 and string 2 are equal"); }else { printf("string 1 and 2 are different"); } return 0; }
Output
Can you guess what the output will be?
string 1 and 2 are different
Strrev
The strrev(string) function returns reverse of the given string.
Syntax
strrev(str);
Strlwr
The strlwr(string) function returns string characters in lowercase.
Syntax
strlwr(str);
Strupr
The strupr(string) function returns string characters in uppercase.
Now let’s see a simple example using these 3 functions.
#include<stdio.h> #include <string.h> int main(){ char str[20]; char str1[20]; char str2[20]; printf("Enter string: "); gets(str); //reads string from console printf("String is: %s",str); printf("\nReverse String is: %s",strrev(str)); str1 = strlwr(str); //converts string into lowercase printf("\nLowercase String is: %s",str1); str2 = strupr(str1); //converts string into uppercase printf("\nUppercase String is: %s",str2); return 0; }
Output
Enter string: NERDY String is: NERDY Reverse String is: YDREN Lowercase String is: nerdy Uppercase String is: NERDY
Try to use all these functions while using Strings, it will help you understand better.