For a better understanding of this article, you might want to read first:
By looking at the ASCII code chart, you can see that the uppercase letters have values 32 less than the ones of the lowercase letters. This means that to convert a string to uppercase, it is enough to set the sixth bit to 0. Lowercase to uppercase
The C function below changes all the letters of the string received as argument to uppercase characters.
/*
* Description:
* Converts all the letters of a string to uppercase using bitwise operations
* Parameters:
* string - the string to be converted to uppercase
* Returns:
* converted - the string converted to uppercase
*/
char *ToUppercase(char *string)
{
char *converted = NULL;
int i = 0;
converted = (char*)malloc(sizeof(char) * strlen(string) + 1);
for(i=0; i<strlen(string); i++)
{
if(string[i] >='a' && string[i] <='z')
{
converted[i] = (char) (string[i] & 65503);//65 503 (decimal) = 1111 1111 1101 1111 (binary)
}
else
{
converted[i] = string[i];
}
}
converted[i] = '\0';
return converted;
}Example: #include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
char *ToUppercase(char *string);
int main(void)
{
char s[] = "VINTAGE CODING";
char *conv = NULL;
printf("\n The string before lowercase conversion: %s",s);
conv = ToLowercase(s);
printf("\n\n\tThe string after lowercase conversion: %s",conv);
getch();
return 0;
}Output: Uppercase to lowercase
For a conversion to lowercase of a string, you have to set the sixth bit to 1. The C function below changes all the letters of the string received as argument to lowercase characters./*
* Description:
* Converts all the letters of a string to lowercase using bitwise operations
* Parameters:
* string - the string to be converted to lowercase
* Returns:
* converted - the string converted to lowercase
*/
char *ToLowercase(char *string)
{
char *converted = NULL;
int i = 0;
converted = (char*)malloc(sizeof(char) * strlen(string) + 1);
for(i=0; i<strlen(string); i++)
{
if(string[i] >= 'A' && string[i] <= 'Z')
{
converted[i] = (char) (string[i] | 32);//32 (decimal) = 0000 0000 0010 0000 (binary)
}
else
{
converted[i] = string[i];
}
}
converted[i] = '\0';
return converted;
}Example:#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
char *ToLowercase(char *string);
int main(void)
{
char s[] = "VINTAGE CODING";
char *conv = NULL;
printf("\n The string before lowercase conversion: %s",s);
conv = ToLowercase(s);
printf("\n\n\tThe string after lowercase conversion: %s",conv);
getch();
return 0;
}Output: 

No comments:
Post a Comment