Sie sind auf Seite 1von 7

SCA Pvt. Ltd.

(Sharma Computer Academy)


Author: Saurabh Shukla

Chapter-11
Strings
Introduction
In our previous chapter (arrays), we studied that array is a collection of similar elements.
These similar elements could be all ints, floats, doubles or any other data type. Array of
chars are often called strings.
We are going to study character array in a separate chapter because operations that can
performed on numbers, can not be applicable on characters. For example we can multiply
two numbers but there is no sense to multiply two characters or strings.
Example
main()
{
char text[6] = {H, e, l, l, o,\0 };
int i=0;
while(i<=5)
{
printf(%c,text[i]);
i++;
}
}
Explanation:
1) In this program we handle character array in the same way as we handled int or
float array. We have assigned Hello in a char array of size 6.
2) Notice subtle difference during initialization of array. At the end \0 is assigned.
The last element of character array should be nul character denoted by \0.
3) In C, Strings are always terminated by nul character. It is great importance during
handling of strings. It denotes the end mark of string.
4) First character H is stored in text[0], e is stored in text[1] and so on. The last
character \0 is stored in text[5].
5) Loop is used to repeat printf() statement. Printf() is printing one character at a
time.
6) Remember nul (\0) character is not a printable symbol.
7) ASCII value of nul character is 0.
Example
main()
{
char text[6] = {H, e, l, l, o,\0 };

SCA Pvt. Ltd. (Sharma Computer Academy)


Author: Saurabh Shukla
int i=0;
while(text[i]!=\0)
{
printf(%c,text[i]);
i++;
}
}
Explanation
1) Notice the difference in loop condition. This time condition checks for nul
character in text[i]. Until nul character is found in text[i], loop continues.
2) This way of handling gives an ease to the programmer and no need to care about
the length of the string.
Example
main()
{
char text[6] = Hello;
int i=0;
while(text[i]!=\0)
{
printf(%c,text[i]);
i++;
}
}
Explanation
1) Notice the way of initializing array. Instead of writing each character in single
quotes and separating with commas, this convention is convenient to use.
2) Another important point to note is- there is no need to write nul character at the
end in this convention, compiler automatically appends nul character at the end.
3) Rest of the things are same
Example
main()
{
char text[6] = Hello;
printf(%s,&text[0]);
}
Explanation
1) Here is another program telling you the use of format specifier %s. This is used
only for strings.
2) Observe that in printf we write &text[0] and not text[0]. This means with %s
format specifier one should always use address of first block of array.
3) You can write text in place of &text[0], both have the same meaning.

SCA Pvt. Ltd. (Sharma Computer Academy)


Author: Saurabh Shukla
4) When you pass &text[0] or simply text, it means printing should strat from text[0]
and end when nul character arrives.
Example
main()
{
char text[ ] = Hello;
printf(%s,&text[0]);
}
Explanation
1) You can also leave array size blank as you are assigning values to array during
declaration.
Example
main()
{
char text[20];
printf(Enter your name);
scanf(%s,&text[0]);
printf(hi, %s,&text[0]);
}
Explanation
1) In this program, user can input his name as we used scanf().
2) Notice %s is used in scanf for string input. Again remember, if you are using %s
in printf or scanf always pass address of the first block of array.
3) Run this code to understand the capabilities of scanf().
4) If you input Amir, it will get stored in the array and nul character is automatically
appended by compiler.
5) If you input Amir Khan, only the first word of the input string will be stored in
character array and nul is automatically appended.
6) Scanf() is not capable to input multiword string. The solution to this problem is a
function gets()
main()
{
char text[20];
printf(Enter your name);
gets(&text[0]);
printf(hi, %s,&text[0]); //or puts(&text[0]);
}
Explanation
1) No need to mention format specifier in function gets() as it is dedicated only for
string input.

SCA Pvt. Ltd. (Sharma Computer Academy)


Author: Saurabh Shukla
2) gets() is declared in stdio.h header file.
3) Function gets() can input only one string at a time.
4) As gets() can be used for input, function puts() can be used for output in place of
printf().
5) Printf can print multiple strings in a single statement, on the other hand puts can
only output single string.
Example: Program to calculate length of string
main()
{
char text[20];
int len=0;
printf(Enter a string );
scanf(%s,&text[0]);
while(text[len]!=\0)
len++;
printf(Length of string: %s is %d,&text[0],len);
}
Explanation
1) If you input Sachin length will be 6. If you input Saurabh length will be 7.
2) To calculate length of a given string, we take a variable len. len is initialized with
0. len is now incremented till text[len] becomes nul. Since len is now containing
index of that block which contains nul. The value of len is length of the string
excluding nul character.
3) No need to decrease len by 1 to show length at last, as indexing starts from 0.
Built-in function for String manipulation
There are several predefined functions to manipulate strings. These functions are declared
in string.h. We are discussing few of them:
Function name: strlen()
Usage:
main()
{
int len;
char str[20];
printf(Enter a string);
gets(str);
len=strlen(str);
printf(Length is %d,len);
}

Function name: strrev()

SCA Pvt. Ltd. (Sharma Computer Academy)


Author: Saurabh Shukla
Usage:
main()
{
char str[20];
printf(Enter a string);
gets(str);
printf(You entered %s,str);
strrev(str);
printf(Reverse is %s, str);
}
Function name: strlwr()
Usage:
main()
{
char str[20];
printf(Enter a string);
gets(str); //sample input is SCA
strlwr(str);
printf(String in lower case is %s,str); //sample output is sca
}
Function name: strupr()
Usage:
main()
{
char str[20];
printf(Enter a string);
gets(str); //sample input is sca
strupr(str);
printf(String in upper case is %s,str); //sample output is SCA
}
Function name: strcpy()
Usage:
main()
{
char str1[20], str2[20];
printf(Enter a string);
gets(str1); //sample input is Computer
strcpy(str2,str1);
printf(String1=%s and String2 = %s,str1,str2);
}
Output
String1=Computer and String2=Computer

SCA Pvt. Ltd. (Sharma Computer Academy)


Author: Saurabh Shukla
Function name: strcat()
Usage:
main()
{
char str1[20], str2[40];
printf(Enter two strings);
gets(str1); //sample input is Computer
gets(str2); //sample input is Education
strcat(str2,str1);
printf(String1=%s and String2 = %s,str1,str2);
}
Output
String1=Computer and String2=ComputerEducation
Function name: strcmp()
Usage:
main()
{
int r;
char str1[20], str2[20], str3[20];
printf(Enter three strings);
gets(str1); //sample input is Hello
gets(str2); //sample input is Hello
gets(str3); //sample input is hello
r=strcmp(str2,str1);
printf(%d,r); //output is 0
r=strcmp(str1,str3);
printf(%d,r); //Output is -32
}
Two Dimension character array
This is similar to two dimension array that we studied in previous chapter.
main()
{
int i;
char str[5][10];
printf(Enter 5 strings);
for(i=0;i<5;i++)
gets(str[i]);
for(i=0;i<5;i++)
printf(\nString %d = %s ,i+1,str[i]);
}
Explanation

SCA Pvt. Ltd. (Sharma Computer Academy)


Author: Saurabh Shukla
1) A two dimensional character array can store multiple strings. According to our
example we can store 5 strings each can contain 10 characters.
2) Notice function gets() we passed str[i] which is equivalent to &str[i][0]. Same is
the case in printf().

Das könnte Ihnen auch gefallen