Sponsored Links
C Language Tutorials
- TSR in C - An Introduction
- Concept of Pixel in C Graphics
- Call by Value and Call by Reference
- C Language - The Preprocessor
- C Programming - File management in C
- C Programming - Linked Lists
- C Programming - Dynamic Memory allocation
- C Programming - Pointers
- C Programming - Structures and Unions
- C Programming - Functions (Part-II)
- C Programming - Functions (Part-I)
- C Programming - Handling of character string
- C Programming - Arrays
- C Programming - Decision Making - Looping
- C Programming - Decision Making - Branching
- C Programming - Managing Input and Output Operations
- C Programming - Expressions
- C Programming - Operators
- C Programming - An Overview
- C Programming - Constants and Variables
Tutorials
C LanguageC Programming - Handling of character string
C Programming - Handling of character string
In this tutorial you will learn about Initializing Strings, Reading Strings from the terminal, Writing strings to screen, Arithmetic operations on characters, String operations (string.h), Strlen() function, strcat() function, strcmp function, strcmpi() function, strcpy() function, strlwr () function, strrev() function and strupr() function.
A string is a sequence of characters. Any sequence or set of characters defined within double quotation symbols is a constant string. In c it is required to do some meaningful operations on strings they are:
- Reading string displaying strings
- Combining or concatenating strings
- Copying one string to another.
- Comparing string & checking whether they are equal
- Extraction of a portion of a string
Strings are stored in memory as ASCII codes of characters that make up the string appended with ‘\0’(ASCII value of null). Normally each character is stored in one byte, successive characters are stored in successive bytes.
|
Character |
m |
y |
|
a |
g |
e |
|
i |
s |
|
ASCII Code |
77 |
121 |
32 |
97 |
103 |
10 |
32 |
105 |
115 |
|
|
|
|
|
|
|
|
|
|
|
|
Character |
|
2 |
|
( |
t |
w |
o |
) |
\0 |
|
ASCII Code |
32 |
50 |
32 |
40 |
116 |
119 |
41 |
0 |
0 |
The last character is the null character having ASCII value zero.
Initializing Strings
Following the discussion on characters arrays, the initialization of a string must the following form which is simpler to one dimension array.
char month1[ ]={‘j’,’a’,’n’,’u’,’a’,’r’,’y’};
Then the string month is initializing to January. This is perfectly valid but C offers a special way to initialize strings. The above string can be initialized char month1[]=”January”; The characters of the string are enclosed within a part of double quotes. The compiler takes care of string enclosed within a pair of a double quotes. The compiler takes care of storing the ASCII codes of characters of the string in the memory and also stores the null terminator in the end.
| /*String.c string variable*/ #include < stdio.h > main() { char month[15]; printf (“Enter the string”); gets (month); printf (“The string entered is %s”, month); } |
In this example string is stored in the character variable month the string is displayed in the statement.
printf(“The string entered is %s”, month”);
It is one dimension array. Each character occupies a byte. A null character (\0) that has the ASCII value 0 terminates the string. The figure shows the storage of string January in the memory recall that \0 specifies a single character whose ASCII value is zero.
|
J |
|
A |
|
N |
|
U |
|
A |
|
R |
|
Y |
|
\0 |
Character string terminated by a null character ‘\0’.
A string variable is any valid C variable name & is always declared as an array. The general form of declaration of a string variable is
Char string_name[size];
The size determines the number of characters in the string name.
Example:
char month[10];
char address[100];
The size of the array should be one byte more than the actual space occupied by the string since the complier appends a null character at the end of the string.
Reading Strings from the terminal:
The function scanf with %s format specification is needed to read the character string from the terminal.
Example:
char address[15];
scanf(“%s”,address);
Scanf statement has a draw back it just terminates the statement as soon as it finds a blank space, suppose if we type the string new york then only the string new will be read and since there is a blank space after word “new” it will terminate the string.
Note that we can use the scanf without the ampersand symbol before the variable name.
In many applications it is required to process text by reading an entire line of text from the terminal.
The function getchar can be used repeatedly to read a sequence of successive single characters and store it in the array.
We cannot manipulate strings since C does not provide any operators for string. For instance we cannot assign one string to another directly.
For example:
String=”xyz”;
String1=string2;
Are not valid. To copy the chars in one string to another string we may do so on a character to character basis.
Writing strings to screen:
The printf statement along with format specifier %s to print strings on to the screen. The format %s can be used to display an array of characters that is terminated by the null character for example printf(“%s”,name); can be used to display the entire contents of the array name.
Arithmetic operations on characters:
We can also manipulate the characters as we manipulate numbers in c language. When ever the system encounters the character data it is automatically converted into a integer value by the system. We can represent a character as a interface by using the following method.
X=’a’;
Printf(“%d\n”,x);
Will display 97 on the screen. Arithmetic operations can also be performed on characters for example x=’z’-1; is a valid statement. The ASCII value of ‘z’ is 122 the statement the therefore will assign 121 to variable x.
It is also possible to use character constants in relational expressions for example
ch>’a’ && ch < = ’z’ will check whether the character stored in variable ch is a lower case letter. A character digit can also be converted into its equivalent integer value suppose un the expression a=character-‘1’; where a is defined as an integer variable & character contains value 8 then a= ASCII value of 8 ASCII value ‘1’=56-49=7.
We can also get the support of the c library function to converts a string of digits into their equivalent integer values the general format of the function in x=atoi(string) here x is an integer variable & string is a character array containing string of digits.
String operations (string.h)
C language recognizes that string is a different class of array by letting us input and output the array as a unit and are terminated by null character. C library supports a large number of string handling functions that can be used to array out many o f the string manipulations such as:
- Length (number of characters in the string).
- Concatentation (adding two are more strings)
- Comparing two strings.
- Substring (Extract substring from a given string)
- Copy(copies one string over another)
To do all the operations described here it is essential to include string.h library header file in the program.
strlen() function:
This function counts and returns the number of characters in a string. The length does not include a null character.
Syntax n=strlen(string);
Where n is integer variable. Which receives the value of length of the string.
Example
length=strlen(“Hollywood”);
The function will assign number of characters 9 in the string to a integer variable length.
/*writr a c program to find the length of the string using strlen() function*/
#include < stdio.h >
include < string.h >
void main()
{
char name[100];
int length;
printf(“Enter the string”);
gets(name);
length=strlen(name);
printf(“\nNumber of characters in the string is=%d”,length);
}
strcat() function:
when you combine two strings, you add the characters of one string to the end of other string. This process is called concatenation. The strcat() function joins 2 strings together. It takes the following form
strcat(string1,string2)
string1 & string2 are character arrays. When the function strcat is executed string2 is appended to string1. the string at string2 remains unchanged.
Example
strcpy(string1,”sri”);
strcpy(string2,”Bhagavan”);
Printf(“%s”,strcat(string1,string2);
From the above program segment the value of string1 becomes sribhagavan. The string at str2 remains unchanged as bhagawan.
strcmp function:
In c you cannot directly compare the value of 2 strings in a condition like if(string1==string2)
Most libraries however contain the strcmp() function, which returns a zero if 2 strings are equal, or a non zero number if the strings are not the same. The syntax of strcmp() is given below:
Strcmp(string1,string2)
String1 & string2 may be string variables or string constants. String1, & string2 may be string variables or string constants some computers return a negative if the string1 is alphabetically less than the second and a positive number if the string is greater than the second.
Example:
strcmp(“Newyork”,”Newyork”) will return zero because 2 strings are equal.
strcmp(“their”,”there”) will return a 9 which is the numeric difference between ASCII ‘i’ and ASCII ’r’.
strcmp(“The”, “the”) will return 32 which is the numeric difference between ASCII “T” & ASCII “t”.
strcmpi() function
This function is same as strcmp() which compares 2 strings but not case sensitive.
Example
strcmpi(“THE”,”the”); will return 0.
strcpy() function:
C does not allow you to assign the characters to a string directly as in the statement name=”Robert”;
Instead use the strcpy(0 function found in most compilers the syntax of the function is illustrated below.
strcpy(string1,string2);
Strcpy function assigns the contents of string2 to string1. string2 may be a character array variable or a string constant.
strcpy(Name,”Robert”);
In the above example Robert is assigned to the string called name.
strlwr () function:
This function converts all characters in a string from uppercase to lowercase.
syntax
strlwr(string);
For example:
strlwr(“EXFORSYS”) converts to Exforsys.
strrev() function:
This function reverses the characters in a string.
Syntax
strrev(string);
For ex strrev(“program”) reverses the characters in a string into “margrop”.
strupr() function:
This function converts all characters in a string from lower case to uppercase.
Syntax
strupr(string);
For example strupr(“exforsys”) will convert the string to EXFORSYS.
| /* Example program to use string functions*/ #include < stdio.h > #include < string.h > void main() { char s1[20],s2[20],s3[20]; int x,l1,l2,l3; printf(“Enter the strings”); scanf(“%s%s”,s1,s2); x=strcmp(s1,s2); if(x!=0) {printf(“\nStrings are not equal\n”); strcat(s1,s2); } else printf(“\nStrings are equal”); strcpy(s3,s1); l1=strlen(s1); l2=strlen(s2); l3=strlen(s3); printf(“\ns1=%s\t length=%d characters\n”,s1,l1); printf(“\ns2=%s\t length=%d characters\n”,s2,l2); printf(“\ns3=%s\t length=%d characters\n”,s3,l3); } |
Comments
stanley said:
| can u tell me whether we can write a program without using the header file \"string.h\",find out the size of the string and the string length... i have one more doubt can u tell me what does an printf and scanf returns.... |
sardar said:
| good it helped me a lot |
ctsnd said:
| The substring extractor function is not included. |
Salih Sen said:
| Thanks for tutorial. It is very basic and simple yet helpful |
Anubha Rao said:
| include string without using standard liabrary fuction |
Dr. Pete =P said:
| A very good tutorial. Simple and clear explainations. Cheers |
Gourav Sethi said:
|
This is very easy way to get proper knowledge about string Examples are very good & easy to understand. |
student1 said:
|
Hi, I liked the tutorial and tried it, but why my code doesn't work, it doesn't print me my string status, instead it shows me some symbols. float pay, hours; char status[9]; printf("Enter hours: "); scanf("%f", &hours); if (hours > 40) { pay = 9.50; status[9]="Overtime"; printf("%.2f and %s ", pay, status); } else { pay = 6.00; status[9]="Regular"; printf("%.2f and %s ", pay, status); } |
savvy said:
|
wrong way to handle strings student1, try this: int hours; float pay; char *status; //status is a character array without a set length printf("Enter hours (int): "); scanf("%d", &hours); if (hours > 40) { pay = 9.50; status = "Overtime"; printf("%.2f and %s ", pay, status); } else { pay = 6.00; status = "Regular"; printf("%.2f and %s ", pay, status); } |
srinithi said:
| Its very useful and easy to get through....But,can u also include some string programs without using standard library functions... |
indra.g said:
|
I defined one two dimensional array of strings, and another string going to search for in two diamensional array.My question is can we compare string each character by character and how.My code does'nt work .Why. char in_array[i][j], *p, s1[15]; int i,j; p=s1;i=0;j=0; while(*p) if( *p == in_array[i][j]) { p ;j ;} else { i ;j=0;p=s1;} |
Pem said:
|
> why the requirement of NULL character in string not in array plz give me ans in my mail Pem_b27@yahoo.com |
Kousi said:
| This was the best tutorial I've came across for string manipulation functions. Thanks a lot. |
sourabrata mukherjee said:
| i think that pointer is very confusing concept.so,it should be gave in very details..I am really thanksfull for tutorials. |
Adam said:
|
thank you, now things are better in my brain and in my program as well :P was a mess |
Sam_pc2008 said:
| i want to ask why you use standerd liabrares to get a string , why dont you just rogram it manually i m begainer and it might be intersting if you show more possablties |
Muhammad Bilal Mirza said:
| Amazing Declaration. |
himanshu said:
| i want to make a program in c using string where i want to enter a string in many lines & each line have defined length and the character in the whole string will not be defined in the start |
Ashis ranjan pal said:
| It is a very good tutorial. |
1 said:
| This is an eassy way to those want to keep study regular and no drought case without any tution. Your tutorial provides them all facility to solve their problem |
1 said:
| why do we use header files and main() funtion before start he program give me ans...(i have no extra knowledge of c language) plz.. |
mahesh said:
| is very good |
jitu3485 said:
|
>1 said: > why do we use header files and main() funtion before start >he program give me ans...(i have no extra knowledge of c language) >plz.. Header files have the function prototypes, that may be used in programs.In large programs/projects they keep the modularity, ease of search and debudding Suppose you have three files main.c header.h and header.c which contains main.c -> main code header.c -> fuction definations header.h -> fuction prototypes of function defined in header.c for main.c to use functions use fuctions defined in header.c it should know where the function is defined or it should have its code. inclusion of header file instructs the compiler to find the specific file in current dir/standard location and codde for specific function is included . |
jerv said:
|
help guys.. what search will i use to find the word in the inputted string from a file. The output would be, the quotation containing such string. Sample output: Enter STRING: most Quotation found If one would like to be successful in the future, let him make the most of the present |
Ram said:
|
sir, I am using linux os... I am programming in that.... my program is "#include #include main() { char word[25],rev[25]; printf("Enter the word"); scanf("%s",&word); rev=strrev(string); printf("%s",rev); }.............................. while using the function"strrev" it shows me an error message ************"reversing.c: In function ‘main’: reversing.c:8: error: ‘string’ undeclared (first use in this function) reversing.c:8: error: (Each undeclared identifier is reported only once reversing.c:8: error: for each function it appears in.) reversing.c:8: error: incompatible types in assignment "**************** how could i rectify this sir.... |
Souvik Bit said:
| It's really nice tutorial program. |
Tass said:
|
[code] #include #include main() { char word[25],rev[25]; printf("Enter the word"); scanf("%s",&word); rev=strrev(string); /* "string" doesn't exist yet, since you haven't initialized it, I believe you intended to use "word" here. So the correct line should be "rev=strrev(word);" */ printf("%s",rev); } [/code] Hope this helped |
yasser said:
| Write a c program to write your name in 10 character after the end of the file...give source code |
Amit saini said:
|
what is the difference b/w char a[3]; char a[3]; gets(a); scanf("%s"a); puts(a) printf("%s",a); if we input if we input amit saini amit saini Output: Output: amit saini ami |
darakhshan sahar said:
| this very helpul 4 learner |
Ernest sollo said:
|
very good understable tutorial to include some examples will impress other to learn |
rituporna bharali said:
| good undestable tutorial |
khusi said:
| i ve to write a program which shall tests as input a file having containing the program and test whether file in which store all the constants numeric as well character present in the source program. |
1 said:
| why can't we use ampersend in scanf() to read string from standard i/o devices |
Yuniel Barbon said:
| I am having a problem with a program I wrote. I have two character arrays that are storing the information I am entering through a keyboard as user name and password. In total each array is 4 characters long. Now I want to get those two arrays and send it as a package through the uart using a xbee PRO. Any clues.... |
ariesashiteru said:
| please help me how to make a program using string that will ask two names and get the sum of all there same letters. please thank you......!!!!! |
DOUGLOW! said:
| Thanks a lot for this tutorial. It's really given me a kick start in c programming. |
Doug said:
|
I once saw a C program where it asks you to think of an animal, asks certain questions about the animal you are thinking of to determine it, and if it can't determine it, it will ask you for what it was and a question to determine it from another animal. It will then store your input and when you try again, it will use all the questions it knows to determine your animal again. The more times you use it the better and better it will become at guessing your animal, because it is constantly 'learning' more information as you type it in. Does have any idea how it works and does anyone know how to make a C program which can search for specific words in a variable, such as in JavaScript? And does anyone know how to make it store some of the users input inside the actual C coding for later reference when the program is opened again? Thanks |
crusier_greg882000@hotmail.com said:
|
How to display string value on the screen? Please help me! void main() { char name[10]; printf(" Enter your name:"); scanf("%s", &name); printf(" Your name:%s",name); return 0; } tell me if it works? |
NamSon said:
|
I did not test your program but there is a first big mistake: //scanf ("%s",&name); Here you dont need to write this "&" before your name because when you read an array your read in the same time as a pointer...so better do this printf(" Enter your name:"); scanf("%s", name);//without "&" printf(" Your name:%s",name); |
mohit said:
|
I have written this programm and execute it on c4free and turbo c++ but problem remains the same THE programm is as under #include void main() { char a,b; scanf("%c",&a); printf("%c",a); scanf("%c",&b); printf("%c",b); } But in the output i cant get the input option for b nor its output means the compiler stops after entering the output of 'a' on to screen and programm terminates after 3 step. |
Collin said:
|
Hi Mohit If you have not found out the solution, here it is for you. Just leave a space before %c in the second scanf.. That should fix the problem :) #include void main() { char a,b; scanf("%c",&a); printf("%c",a); scanf(" %c",&b); // Added Space before %c printf("%c",b); } |
patriz0 said:
|
why is this program not working? can you please help me thanks! #include #include main(){ char word[30], rev[30]; printf("Enter word: "); gets(word); rev = strrev(word); printf("%s", rev); } |
patriz0 said:

|
I tried using strrev and i don't know if this is correct but it doesn't work. Why isn't this working, can you please help me? thanks! #include #include main(){ char word[30], rev[30]; printf("Enter word: "); gets(word); rev = strrev(word); printf("%s", rev); } |
patriz0 said:

| I completed the line stdio.h and string.h.. although it doesn't appear here when i posted it... |
subhha said:
|
If suppose int main() { char str1[]="Hello"; char str2[]="Hello"; if(str1==str2) printf("Equaln"); else printf("Unequaln"); getch(); return 0; } Then the o/p is unequal. How? |
Tanyaradzwa Kadyamatimba said:
|
How do you compare a string character by character? |
Sponsored Links
