Tutorials
C LanguageIn 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:
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.
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.
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.
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.
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.
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:
To do all the operations described here it is essential to include string.h library header file in the program.
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);
}
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.
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”.
This function is same as strcmp() which compares 2 strings but not case sensitive.
Example
strcmpi(“THE”,”the”); will return 0.
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.
This function converts all characters in a string from uppercase to lowercase.
syntax
strlwr(string);
For example:
strlwr(“EXFORSYS”) converts to Exforsys.
This function reverses the characters in a string.
Syntax
strrev(string);
For ex strrev(“program”) reverses the characters in a string into “margrop”.
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); } |
| 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.... |
| good it helped me a lot |
| The substring extractor function is not included. |
| Thanks for tutorial. It is very basic and simple yet helpful |
| include string without using standard liabrary fuction |
| A very good tutorial. Simple and clear explainations. Cheers |
|
This is very easy way to get proper knowledge about string Examples are very good & easy to understand. |
|
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); } |
|
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); } |
| Its very useful and easy to get through....But,can u also include some string programs without using standard library functions... |
|
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;} |
|
> why the requirement of NULL character in string not in array plz give me ans in my mail Pem_b27@yahoo.com |
| This was the best tutorial I've came across for string manipulation functions. Thanks a lot. |
| i think that pointer is very confusing concept.so,it should be gave in very details..I am really thanksfull for tutorials. |
|
thank you, now things are better in my brain and in my program as well :P was a mess |
| 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 |
| Amazing Declaration. |
| 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 |
| It is a very good tutorial. |
| 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 |
| 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.. |
| is very good |
|
>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 . |
|
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 |
|
sir, I am using linux os... I am programming in that.... my program is "#include<stdio.h> #include<string.h> 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.... |
| It's really nice tutorial program. |
|
[code] #include <stdio.h> /* You forgot to complete this line */ #include <string.h> /* This one also.. */ 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 |
| Write a c program to write your name in 10 character after the end of the file...give source code |
|
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 |
| this very helpul 4 learner |
|
very good understable tutorial to include some examples will impress other to learn |
| good undestable tutorial |
| 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. |
| why can't we use ampersend in scanf() to read string from standard i/o devices |
| 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.... |
|
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.</br> 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?</br> Thanks |
|
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? |
|
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); |
|
I have written this programm and execute it on c4free and turbo c++ but problem remains the same THE programm is as under #include<stdio.h> 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. |
|
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); } |
|
why is this program not working? can you please help me thanks! #include<stdio.h> #include<string.h> main(){ char word[30], rev[30]; printf("Enter word: "); gets(word); rev = strrev(word); printf("%s", rev); } |

|
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<stdio.h> #include<string.h> main(){ char word[30], rev[30]; printf("Enter word: "); gets(word); rev = strrev(word); printf("%s", rev); } |

| I completed the line stdio.h and string.h.. although it doesn't appear here when i posted it... |
|
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? |
|
How do you compare a string character by character? |
| if string is stored in a single character using scanf how one can find stringlength? |
|
patriz0: you have to use strcpy in the line rev = strrev(word); you should write strcpy(rev,word); |
|
Hi, How to convert a date string entered into another format. For example, Enter Date: 10/25/2009 and the output should be October 25, 2009 Thanks for the help. |
|
subha... Try this..this should work out.. #include <stdio.h> #include <string.h> int main() { int x; char str1[]="Hello"; char str2[]="Hello"; x= strcmp(str1,str2); if(x==0) printf("Equal n"); else printf("Unequal n"); //getch(); return 0; } output will be equal..Now try changing the str1 to check if it prints unequal |
|
#include<stdio.h> #include<conio.h> #include<string.h> main() { char name[10]; char name1; int j,score,sum,avg,ducknum,abvavg; int a[5]; abvavg = 0; ducknum = 0; sum = 0; for(j = 1; j < 3; j++) { printf("Please enter the namen"); scanf("%s",&name1); printf("Enter scoren"); scanf("%d",&score); name[j] = name1; a[j] = score; sum = sum + score; } avg = sum / 4; for(j = 1; j < 5; j++) { if(a[j] > avg) { abvavg = abvavg + 1; } if(a[j] == 0) { ducknum = ducknum + 1; } if(a[j] > 50) { printf("%c hit above 50 with a score of %dn",name[j],a[j]); } } printf("The amount of batsmen who made a duck is:%dn",ducknum); printf("The amount of batsmen who scored above the team average is:%dn",abvavg); printf("The average is:%dn",avg); getch(); } I keep getting errors when i try this. Can someone help? Ive been trying this for ages. |
|
How to check if a given character exists in an array of characters? for example in the string: "there" how to check or compare if the character 'h' exist in the string "there" ? thanks! |
|
why the requirement of NULL character in string not in array |
|
hi.would u please describe for me how to solve this problem....question: i have some string now user enters a character. it should search which word start with this character...would u please write the code?! |
|
how can i take a string through keyboard using scanf pls tell me on thakor_tejas@yahoo.com |
| i need a help.when i do problems related to string.i got the output screen and asked to enter the string ,but afterwards there is only written like<null> , nothing else.what might be the reason for that............. |
|
is this program correct.........the program is to remove the vowels in the sentence. #include<stdio.h> #include<string.h> void main() { char line1[20],line2[20]; int i,j=0,l; printf("nEnter the string:"); gets(line1); l=strlen(line1); for(i=0;i<l;i++) { if(linel[i]=='a'||line1[i]=='e'||line1[i]=='o'||line1[i]=='u') continue; else line2[j]==line1[i]; j++; } printf("with vowels %s",line1[i]); printf("without vowles:%s"line2[j]); getch(); } |
|
hi...... please tell me the program for satisfying string (ab)*abb is correct or not.. i think prog code is correct but giving not proper output.. //(ab)*abb // it means any string containing a substring //(abababab)abb #include<stdio.h> #include<conio.h> #include<string.h> main() { int i; char str[100]; clrscr(); printf("enter the string=>"); gets(str); for(i=0;i<strlen(str);i++) { if(str[i]!='a' || str[i+1]!='b') { printf("string is unaccepted"); break; } } i=strlen(str); if(str[i-1]=='b' && str[i-2]=='b'&& str[i-3]=='a') { printf("nstring is accepted"); } else { printf("nstring is not accepted"); } getch(); } |
|
hello guyz!need help.. I have a txt file written like this 1,ben, 200.00 2,mike,300.00 I want to create a program that can search in the text file. I just only enter the ID number or the first number in the text file then the program will search that No. The name and amount will display after searching the No. Only line by line of searching.. Please help.. I need it very much in my assignment.. Thank you so much!! |
| what is dynamic memory allocation? |
|
how to store two strings in a single string? |
| I want to write a program in which program prompt a name and I pressed Enter so the program will automatically take the previous name which it had stored. I am using filing and i am editing a record,so if i just want to change the age i just write new age and press enter for other fields and the program take the other fields old values..... |
|
Hammad Read into a "junk" variable, check the length, strcpy to variable if its not zero. printf(“Enter the name”); scanf(“%s”,tname); if (strlen(tname>0) strcpy(name, tname); |
| Hi.. I want to store a line of string to another string variable in which i could process but dont know how to do it in C. For example, "MONDAY, JANUARY 20, 2010" and I want to get only the 2010 from that string. |
| how to determine the number of characters in an string never consider the space. . . ??? |

|
hi... how to compare the word likes 'if' or 'while' with the word from each of the string in another file? i need help...Thanks... |
| how to compare a two-dimensional array having C code and another two-dimensional character array having a list of tokens? |
|
Manolo here: hey guys, i need a C program that ll display a name using 2-D ARRAY. to utilize printf but nothing to be typed henceforth, i.e no use of scanf. waiting.......... |