C - Strings: Declaration of Strings: Declaring A String Is As Simple As Declaring A One Dimensional Array
C - Strings: Declaration of Strings: Declaring A String Is As Simple As Declaring A One Dimensional Array
C - Strings: Declaration of Strings: Declaring A String Is As Simple As Declaring A One Dimensional Array
Strings are actually one-dimensional array of characters terminated by a null character '\0'. Thus
a null-terminated string contains the characters that comprise the string followed by a null.
The following declaration and initialization create a string consisting of the word "Hello". To
hold the null character at the end of the array, the size of the character array containing the string
is one more than the number of characters in the word "Hello."
If you follow the rule of array initialization then you can write the above statement as follows −
char greeting[] = "Hello";
char str_name[size];
In the above syntax str_name is any name given to the string variable and size is used define the
length of the string, i.e the number of characters strings will store. Please keep in mind that there
is an extra terminating character which is the Null character (‘\0’) used to indicate termination of
string which differs strings from normal character arrays.
Initializing a String: A string can be initialized in different ways.
1. By char array
2. By string literal
We will explain this with the help of an example. Below is an example to declare a string with
name as str and initialize it with “HelloWorld”.
Let us now look at a sample program to get a clear understanding of declaring and initializing a
string in C and also how to print a string.
// C program to illustrate strings
#include<stdio.h>
int main()
{
// declare and initialize string
char str[] = "HelloWorld";
// print string
printf("%s",str);
return 0;
}
Output:
Hello World
We can see in the above program that strings can be printed using a normal printf statements just
like we print any other variable. Unlike arrays we do not need to print a string, character by
character. The C language does not provide an inbuilt data type for strings but it has an access
specifier “%s” which can be used to directly print and read strings.
String I/O in C programming
String I/O:
Syntax:
1. printf(“%s” , str)
scanf(“%s”, &str)
2. puts(str)
gets(str) [%s not required]
/*Displaying String*/
printf("%s",nickname);
return 0;
}
Output:
puts(nickname);
return 0;
}
// reading string
scanf("%s",str);
// print string
printf("%s",str);
return 0;
}
You can see in the above program that string can also be read using a single scanf statement.
Also you might be thinking that why we have not used the ‘&’ sign with string name ‘str’ in
scanf statement! To understand this you will have to recall your knowledge of scanf. We know
that the ‘&’ sign is used to provide the address of the variable to the scanf() function to store the
value read in memory. As str[] is a character array so using str without braces ‘[‘ and ‘]’ will give
the base address of this string. That’s why we have not used ‘&’ in this case as we are already
providing the base address of the string to scanf.
Passing strings to function: As strings are character arrays, so we can pass strings to function in
a same way we pass an array to a function. Below is a sample program to do this:
int main()
{
// declare and initialize string
char str[] = "HelloFromBangladesh";
return 0;
}
Output:
HelloFormBangladesh
C – String functions
Sr. Function Syntax Purpose
No.
1. strlen strlen(s1) Returns the length of string s1.
2. strlwr strlwr(s1) Converts string s1 to lowercase.
3. strupr strupr(s1) Converts string s1 to uppercase.
4. strcat strcat(s1,s2) Appends one string s2 at the end of another s1.
5. strncat strncat(s1,s2,n) Appends first n characters of string s2 at the end of s1.
6. strcpy strcpy(s1,s2) Copies a string s2 to another string s1.
7. strncpy strncpy(s1,s2,n) Copies first n characters of string s2 at the end of s1.
8. strcmp strcmp(s1,s2) Compares two strings.
9. strncmp strncmp(s1,s2,n) Compares first n characters of two string.
10. strcmpi strcmpi(s1,s2) Compares two strings regardless of case.
11. strncmpi strncmpi(s1,s2,n) Compares first n characters of two strings regardless
of case. Not case sensitive.
12. strdup s2= strdup(s1) Duplicates a string.
13. strchr strchr(s1,ch) Finds out first occurrence of a given character (ch) in
a string (s1).
14. strrchr strrchr(s1,ch) Finds out last occurrence of a given character (ch) in a
string (s1).
15. strset strset(s1,ch) Sets all characters of string (s1) to a given character
(ch).
16. strnset strnset(s1,ch,n) Sets first n characters of string (s1) to a given
character (ch).
17. strrev s2=strrev(s1) Reverves a string.
C String function – strlen
Syntax:
Example of strlen:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[20] = "MPE,AUST";
printf("Length of string str1: %d", strlen(str1));
return 0;
}
Output:
returned value 8.
strlen(str1)
would return value 20 as the array size is 20 (see the first statement in
sizeof(str1)
main function).
#include <stdio.h>
#include <string.h>
int main()
{
char str1[20] = "String Functions";
printf("Length of string str1 when maxlen is 30: %d", strnlen(str1, 30));
printf("Length of string str1 when maxlen is 10: %d", strnlen(str1, 10));
return 0;
}
Output:
Length of string str1 when maxlen is 30: 13
Length of string str1 when maxlen is 10: 10
Have you noticed the output of second printf statement, even though the string
length was 13 it returned only 10 because the maxlen was 10.
Example of strcmp:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[20] = "String Function";
char s2[20] = "String Functions Uses";
if (strcmp(s1, s2) ==0)
{
printf("string 1 and string 2 are equal");
}else
{
printf("string 1 and 2 are different");
}
return 0;
}
Output:
Example of strncmp:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[20] = "String Function ";
char s2[20] = "String Function Uses” ;
/* below it is comparing first 8 characters of s1 and s2*/
if (strncmp(s1, s2, 8) ==0)
{
printf("string 1 and string 2 are equal");
}else
{
printf("string 1 and 2 are different");
}
return 0;
}
Output:
Example of strcat:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[10] = "Hello";
char s2[10] = "World";
strcat(s1,s2);
printf("Output string after concatenation: %s", s1);
return 0;
}
Output:
Example of strncat:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[10] = "Hello";
char s2[10] = "World";
strncat(s1,s2, 3);
printf("Concatenation using strncat: %s", s1);
return 0;
}
Output:
Example of strcpy:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[30] = "string 1";
char s2[40] = "string 2 : I’m gonna copied into s1";
/* this function has copied s2 into s1*/
strcpy(s1,s2);
printf("String s1 is: %s", s1);
return 0;
}
Output:
Example of strncpy:
#include <stdio.h>
#include <string.h>
int main()
{
char first[30] = "string 1";
char second[30] = "string 2: I’m using strncpy now";
/* this function has copied first 10 chars of s2 into s1*/
strncpy(s1,s2, 12);
printf("String s1 is: %s", s1);
return 0;
}
Output:
Example of strchr:
#include <stdio.h>
#include <string.h>
int main()
{
char mystr[30] = "I’m an example of function strchr";
printf ("%s", strchr(mystr, 'f'));
return 0;
}
Output:
f function strchr
#include <stdio.h>
#include <string.h>
int main()
{
char mystr[30] = "I’m an example of function strchr";
printf ("%s", strrchr(mystr, 'f'));
return 0;
}
Output:
function strchr
Why output is different than strchr? It is because it started searching from the
end of the string and found the first ‘f’ in function instead of ‘of’.
Example of strrev:
#include <stdio.h>
#include <string.h>
int main()
{
char str1[20] = "MPE,AUST";
printf("The reverse string of string str1: %s", strlen(str1));
return 0;
}
Output:
#include <stdio.h>
#define MAX_SIZE 100 // Maximum size of the string
int main()
{
char text[MAX_SIZE]; /* Declares a string of size 100 */
int i;
int count= 0;
return 0;
}
C Program –Copy a String without using standard
library function strcpy
/**
* C program to copy one string to another string without using strcpy()
*/
#include <stdio.h>
#define MAX_SIZE 100 // Maximum size of the string
int main()
{
char text1[MAX_SIZE];
char text2[MAX_SIZE];
int i;
return 0;
}
#include <stdio.h>
#define MAX_SIZE 100 // Maximum string size
int main()
{
char str1[MAX_SIZE], str2[MAX_SIZE];
int i, j;
return 0;
}
#include <stdio.h>
#define MAX_SIZE 100 // Maximum string size
int main()
{
char str[MAX_SIZE];
int i;
int main()
char str[MAX_SIZE];
char toSearch;
int i;
gets(str);
i=0;
while(str[i]!='\0')
if(str[i] == toSearch)
i++;
return 0;