In this article, we are going to design a program that abbreviates the first and middle name leaving the last name as it is.
Suppose if the user inputs the following name: William Henry Gates
Then the output of the program would be: W. H. Gates
Without further a due I present you with the Steps:-
- We have declared two character arrays (strings), name[4] and abname[30], which stores the name input by the user and abbreviated name respectively.
- Suppose if the user inputs the following name: William Henry Gates Then the two arrays would have the following values: Name[40]="William Henry Gates" (unchanged) Abname[30]=EMPTY
- The next step is to store the first character of the array name[40] to the abname[30] array and put a dot (.) and a space( ) after it.
- Next, we set-up a loop which finds space in the array name[40] (space separates first, middle and last names). As soon as a space is detected the character immediately after the space is stored to the abname[30] array, followed by a dot (.) and a space. Now the two arrays have these values: Name[40]=”William Henry Gates” (unchanged) Abname[30]="W. H. "
- Now that we have abbreviated the first and middle name, we need to store the last name as it is. For this, we again search for a space, as it is found, the control goes to the while loop where the whole of the last name is copied to the abname[30] array. Now the two arrays have the following values: Name[40]=”William Henry Gates” (unchanged) Abname[30]="W. H. Gates"
Program:
//C++ program to abbreviate first and middle name
#include<stdio.h>
#include<string.h>
void main(void)
{
char name[40];
char abname[30];
int i,len,m=1,j=0;
//puts is used to print string of characters
//although cout is equivalent to it but gets
//and cout should not be mixed in one program
puts("Enter Name: ");
//gets is used to take string input with spaces
gets(name);
//strlen is a built-in function, declared in
//the string.h header file
//it returns the length of a string
len=strlen(name);
abname[j++]=name[0];
abname[j++]='.';
abname[j++]=' ';
for (i=0;i<len;i++)
{
if(name[i]==' ')
if(m==1)//check to see if it is the
//middle name
{
abname[j++]=name[i+1];
abname[j++]='.';
abname[j++]=' ';
m=0;//middle name has been fetched
}
else//if it is not the middle name
{
while(name[i]!='\0')
//copy characters until the end of
//the string is reached which is
//represented by the \0 constant
{
abname[j++]=name[++i];
}
}
}
abname[j++]='\0';//put the end of string constant
puts("Abbreviated Name: ");
puts(abname);
}
Although this program has little or no use as it is, I don’t think there is any harm in learning how things are done.
You may also incorporate this in other programs where you need to do such abbreviations.
Hope this helps…