0% found this document useful (0 votes)
19 views19 pages

Lecture CSP10

Uploaded by

physics lover
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
19 views19 pages

Lecture CSP10

Uploaded by

physics lover
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

Character Arrays

One dimensional Arrays


Strings
– Declaration
– Initialization
– Printing
– Reading
Examples
– Character Manipulation in strings
– String Manipulation
Arrays of strings (Two Dimensional Char Arrays)
– Declaration
– Initialization
– Printing
– Reading
– Coding Examples
Strings
• Strings in C are represented by arrays of characters
• End of the string is marked with a special character NULL.
• The corresponding escape sequence character is \0.
• C does not have string data type.

Declaration of strings:
char str[30];
char line[80];
String Initialization:
char str[9] = “I like C”;
same as
char str[9]={‘I’,‘ ‘,’l’,‘i’,’k’,’e’,‘ ‘,’C’,’\0’};

Q. Is there any difference between following Initialization?


char str[]=“MNIT”;
char str[4]= “MNIT”;

Ans: Yes, in second declaration there is no


null character
Printing Strings
char text[]=“C Programming”;
printf("%s\n",text);
printf("%10.5s\n",text);
printf("%-10.5s",text);

Output???
C Programming Formatting String Output: %w.ns
w is the width of the string
C Pro dot (.) character after w and n are optional
if present only n characters will be displayed and
C Pro  (w-n) leading spaces will be added before the string
 if only width of the string(i.e w) is specified &
 length of the string is less than the width specified then
the output will be right-justified with leading spaces.
 and Otherwise, no leading space is added
Reading a String (contd..)
Using scanf()
char text[30];
printf(“Enter a string: ”);
scanf(“%s”,text);
printf(“The string is : %s”,text);
Sample output:
Enter a string: hello
The string is: hello
-----------------------------------------
Enter a string: hello how are you
The string is: hello
Note: scanf() takes string without blank space
Reading a String (contd..)
char text[30];
printf(“Enter a string: ”);
scanf(“%[a-z]s”,text);
printf(“The string is : %s”,text);

Sample output:
Enter a string: hello
The string is: hello
Enter a string: hello123
The string is: hello
Single Line input
char text[80];
printf(“Enter a string: ”);
scanf(“%[^\n]s”,text);/*newline terminated string */
printf(“The string is : %s”,text);

Sample output:
Enter a string: hello how are you
The string is: hello how are you
Multi line Input
char text[180];
printf(“Enter a string terminate with ~: ”);
scanf(“%[^~]s”,text);
printf(“The string is : %s”,text);

Note: After ^ any character can be used to


terminate the input.
Sample output:
Enter a string terminate with ~: hello how are
you. ~
The string is: hello how are you.
Problem!!!
Dangling character
Input String using gets()
char str[200];
printf(“Enter a string :”);
gets(str);
printf(“The string is :%s”,str);

Output
Enter a string :C programming
The string is : C programming
Character Manipulation in the String
Example: Text without blank space

int main()
{ char s[80],ws[80];
int i,j;
printf(“Enter the text:\n”);
gets(s); /* reading text from user */
for(i=0,j=0; s[i]!=‘\0‘; i++)
{ if(s[i]!=‘ ‘)
ws[j++] = s[i];
}
ws[j]=‘\0’;

printf(“The text without blank space is:\n”);


puts(ws); /* printing text on monitor */
return;
}
Important Character functions in ctype.h

isdigit(c)/*Returns a nonzero if c is a digit*/

islower(c) /* Returns a nonzero if c is a


lower case alphabetic character */
isalpha(c)/*Returns a nonzero if c is an
alphabet*/
isspace(c) /*Returns a nonzero for blanks */
isupper(c) /*Returns a nonzero if c is capital
letter*/
toupper(c) /* Returns upper case of c */

tolower(c) /* Returns lower case of c */


String Manipulation functions in string.h

strcpy(s1,s2) /* copies s2 into s1 */

strcat(s1,s2) /* concatenates s2 to s1 */

strlen(s) /* returns the length of s */

strcmp(s1,s2)/*returns 0 if s1 and s2 are same


returns less then 0 if s1<s2
returns greater than 0 if s1>s2 */
Implementation of strlen()
int n = 0;
char text[100],c;
while((c = getchar())!=‘\n’&& n<99)
text[n++] = c;

text[n++]=‘\0’;
printf(“Length of text : %d”,n);
Implementation of strcat()
void main() /* s2 is concatenated after s1 */
{ char s1[100],s2[100];
int i = 0,j = 0;
printf("Enter first string\n");
scanf("%[^\n]",s1); getchar();
printf("Enter second string\n");
scanf("%[^\n]",s2);
while(s1[i++] != '\0'); i--;
while(s2[j] != '\0')
s1[i++] = s2[j++];
s1[i] = '\0';
printf("\n Final string is:%s",s1);
}
Palindrome problem: Algorithm Design

1. Read a string in str[0….n-1]


2. Initialize left = 0 and right = n-1
3. Repeat for left<right
3.1 str[left] != str[right] terminate with false
3.2 Increment left and decrement right
4. Terminate with true

Returns false
If str[left] != str[right] for any value of left>=0 and right<=n-1
Where left<right
Palindrome problem: Implementation

void main()
{ char str[80];
int left,right,i,len,flag = 1;
printf("Enter a string");
for(i = 0;(str[i] = getchar())!='\n';++i);
len = i-1;
for(left = 0,right = len; left < right; ++left,--right)
{ if(str[left]!= str[right])
{ flag = 0;
break;
}
}
if(flag)printf("\n String is palindrome");
else
printf("\n String is not a palindrome");
}
Exercise: Write equivalent while loop for the above.
Word counting Problem: Algorithm
Problem Statement: Count the number of words in text.
Assumption a word is separated by blank space except
last word which is separated by ‘\0’.
Algorithm Steps
1. Read a character array text[N]
2. Initialize count =0
3. Repeat while text[i]!=‘\0’
If text[i] = ‘ ‘ then Increment count by 1
4. Print the count
5. Return

17
Word counting Problem: Implementation
void main()
{ char text[40];
int i = 0,count = 0;
printf("Enter a string:");
gets(text);
while(text[i]!='\0')
{
while(isspace(text[i]))
i++; /* Repeat till first non blank character */
if(text[i]!='\0')
{ count++;
while(!isspace(text[i])&& text[i]!='\0')
i++; /* Repeat till first blank character */

}
}
printf("The number of words in the string is %d",count);
}

18
Home assignment Problem
1. Write a program to count the number of
characters and words in a text string.
2. Write a program to reverse a string.
3. Write a program which will read a line of text and
rewrite it in the alphabetical order.
4. Write a program to copy one string into another
string.
5. Write a program to replace a particular word by
another word in a given string. Both the words are
provided by the user at run time.

19

You might also like