In: Computer Science
Create a program in C that counts the number of characters in a word when a user inputs a string. Use stdin to read an input string. For example, if a user inputs: “The dog is good” the output should be
a= [The], b=3
a= [dog], b=3
a= [ is], b=2
a= [good], b=4
a= [ ], b=0000
Take into account EOF. If an EOF is reached at the end of the string then the output should be 0000. (example above)
Don’t take leading spaces into consideration. If there is spaces at the end of a string, for example “-----She ate---” ( - is a space, so there is 3 spaces after the e ), then the output should be
a= [She], b=3
a= [ate], b=3
a= [ ], b=-1
a= [ ], b=-1
a= [ ], b=-1
a= [ ], b=0000
Will need to print a= [ ], b=[-1] for each space if there is any.
If a newline at the end of the string, then output 1000. If user input “My name is Joe” with a new line after Joe then output.
a= [My], b=2
a= [name], b=4
a= [is], b=2
a= [Joe], b=3
a= [ ], b=1000
a= [ ], b=0000 // End of file (EOF) is reached after the newline.
If there are multiple newlines in a string that you will need to print out a= [ ], b=1000 for every new line.
If the case sensitive word “stop” is encountered in the string then print out 0000. If a user inputs “He said stop” then the output should be
a= [He], b=2
a= [said], b=4
a= [stop], b=0000
a= [ ], b=0000 // End of file (EOF) is reached after the word stop
So if a string contains the word "stopper" it will not print out a= [stop], b=0000. It would print out a= [stopper], b=7.
Please use these strings given and show output. Thank you.
//do comment if any problem arises
//code
#include <stdio.h>
#include <string.h>
//this function prints a and b
void print(char current_word[], int l)
{
//if no word
if (l == 0)
return;
if (strcmp(current_word, "stop") == 0)
printf("a= [%s], b=0000\n", current_word);
else
printf("a= [%s], b=%d\n", current_word, l);
}
//this number of characters prints frequency of each word
void printWords(char string[])
{
char current_word[100];
int l = 0, i = 0;
int is_start = 0;
while (1)
{
//if a space after starting of string
if (string[i] == '-')
{
if (is_start)
{
if (l != 0)
{
print(current_word, l);
current_word[0] = '\0';
l = 0;
}
printf("a= [ ], b=-1\n");
}
}
//if EOF
else if (string[i] == '\0')
{
//print current word
print(current_word, l);
l = 0;
//now print endl
current_word[l++] = string[i];
printf("a= [%s], b=0000\n", current_word);
return;
}
//if newline character
else if (string[i] == '\n')
{
print(current_word, l);
l = 0;
current_word[l++] = string[i];
printf("a= [%s], b=1000\n", current_word);
return;
}
//if space
else if (string[i] == ' ')
{
print(current_word, l);
l = 0;
current_word[l] = '\n';
}
else
{
is_start = 1;
current_word[l++] = string[i];
current_word[l] = '\0';
}
i++;
}
}
int main()
{
char string[1000];
printf("Enter the string: ");
gets(string);
printWords(string);
}
Output: