The
C language provides no explicit support for strings in the language itself. The
string-handling functions are implemented in libraries. The string library
(string.h or strings.h) has some useful functions for working with strings,
like strcpy, strcat, strcmp, strlen, strcoll, etc. We will take a look at some
of these string operations.
#include <stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
int length(char str[]);
void reverse(char str[]);
int palindrome(char str[]);
void copy(char str1[], char str2[]);
int compare(char str1[], char str2[]);
void concat(char str1[], char str2[]);
void search(char str1[], char str2[]);
void count(char str1[]);
int main() {
char a[100], b[100];
printf("\n 1. Length Of A String");
printf("\n\n 2. Reverse The Given
String");
printf("\n\n 3. Check For Palindrome");
printf("\n\n 4. Copy");
printf("\n\n 5. String Comparison");
printf("\n\n 6. String Concatenation");
printf("\n\n 7. String Searching");
printf("\n\n 8. Counting Of Words, Characters
& Special Characters");
printf("\n\n 9. Quit");
do {
printf("\n\nEnter Your Choice: ");
scanf("%d", &option);
_flushall();
switch (option) {
case 1:
printf("\nEnter a String: ");
gets(a);
result = length(a);
printf("\nLength of %s = %d", a, result);
printf("\n\nPress any key to
continue...\n");
getch();
break;
case 2:
printf("\nEnter a String: ");
gets(a);
reverse(a);
printf("\nIts Reverse String = %s", a);
printf("\n\nPress any key to
continue...\n");
getch();
break;
case 3:
printf("\nEnter a String: ");
gets(a);
result = palindrome(a);
if (result == 0)
printf("\n%s is not a Palindrome", a);
else
printf("\n%s is a Palindrome", a);
printf("\n\nPress any key to
continue...\n");
getch();
break;
case 4:
printf("\nEnter a String: ");
gets(a);
copy(b, a);
printf("\nCopy of the String = %s", b);
printf("\n\nPress any key to
continue...\n");
getch();
break;
case 5:
printf("\nEnter 1st string: ");
gets(a);
printf("\nEnter 2nd string: ");
gets(b);
result = compare(a, b);
if (result == 0)
printf("\nBoth are same");
else if (result > 0)
printf("\n1st>2nd");
else
printf("\n1st<2nd");
printf("\n\nPress any key to
continue...\n");
getch();
break;
case 6:
printf("\nEnter 1st string: ");
gets(a);
printf("\nEnter 2nd string: ");
gets(b);
concat(a, b);
printf("\nResult = %s", a);
printf("\n\nPress any key to
continue...\n");
getch();
break;
case 7:
printf("\nEnter 1st string: ");
gets(a);
printf("\nEnter 2nd string: ");
gets(b);
search(a, b);
printf("\n\nPress any key to
continue...\n");
getch();
break;
case 8:
printf("\nEnter a string: ");
gets(a);
count(a);
printf("\n\nPress any key to
continue...\n");
getch();
break;
default:
printf("\nExit:");
break;
}
} while (option != 9);
}
int length(char str[]) {
int i = 0;
while (str[i] != '\0')
i++;
return (i);
}
void reverse(char str[]) {
int i, j;
char temp;
i = j = 0;
while (str[j] != '\0')
j++;
j--;
while (i < j) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}}
int palindrome(char str[]) {
int i, j;
i = j = 0;
while (str[j] != '\0')
j++;
while (i < j) {
if (str[i] != str[j - 1])
return (0);
i++;
j--;
}
return (1);
}
void copy(char str2[], char str1[]) {
int i = 0;
while (str1[i] != '\0') {
str2[i] = str1[i];
i++;
}
str2[i] = '\0';
}
int compare(char str1[], char str2[]) {
int i;
i = 0;
while (str1[i] != '\0') {
if (str1[i] > str2[i])
return (1);
if (str1[i] < str2[i])
return (-1);
i++;
}
return (0);
}
void concat(char str1[], char str2[]) {
int i, j;
i = 0;
while (str1[i] != '\0')
i++;
for (j = 0; str2[j] != '\0'; i++, j++)
str1[i] = str2[j];
str1[i] = '\0';
}
void search(char str1[], char str2[]) {
int i, j, lena, lenb;
for (lena = 0; str1[lena] != '\0'; lena++);
for (lenb = 0; str2[lenb] != '\0'; lenb++);
for (i = 0; i <= lena - lenb + 1; i++) {
for (j = 0; str1[i + j] == str2[j] &&
str2[j] != '\0'; j++);
if (str2[j] == '\0')
printf("\nString found at location : %d",
i + 1);
}}
void count(char str[]) {
int words = 0, characters = 0, spchar = 0, i;
for (i = 0; str[i] != '\0'; i++) {
if (isalnum(str[i]) && (i == 0 ||
!isalnum(str[i - 1])))
words++;
characters++;
if (!isalnum(str[i]) && !isspace(str[i]))
spchar++;
}
printf("\nNo of characters = %d",
characters);
printf("\nNo of special characters = %d",
spchar);
printf("\nNo of words = %d", words);
}