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 after the e), then the output should be
a= [She], b=[3]
a= [ate], b=[3]
a= [ ], b=[-1]
a= [ ], b=[00000]
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 the 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]
Hi, Please find the solution and rate the answer.
//
// main.c
// CountChars
//
//
#include <stdio.h>
void reinitialize(char *temp,int count){
for (int i=0; i<count; i++) {
temp[i] = ' ';
}
}
void printArray(char *temp){
for (int i=0; temp[i]!=' '; i++) {
if(temp[i]=='\n') break;
printf("%c",temp[i]);
}
}
int main(int argc, const char * argv[]) {
// insert code here...
printf("Enter the string");
char strr[100];
fgets(strr, sizeof strr, stdin);
int count=0;
int k=0;
char arrTemp[] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',};
int countFirstWord = 0;
for(int i = 0; strr[i] != '\0' && i<strlen(strr); ++i)
{
if(strr[i]==' ' && countFirstWord==0){//this is to skip leading spaces
continue;
}else{
countFirstWord=1;
}
if(strr[i]=='\n'){
printf("a=[],b=[1000]");
break;
if(strr[i+1]==EOF){
printf("a=[],b=[0000]\n");
break;
}
}
reinitialize(arrTemp, 20);
if(strr[i]!=' '){
int k=0;
for (k=0; k<20; k++) {
if(strr[i]==' ') break;
arrTemp[k]=strr[i++];
count++;
}
printf("a=[");
printArray(arrTemp);printf("], b=[");
printf("%d]\n",count);count=0;
}
}
return 0;
}
In the solution below, the leading spaces are removed using while loop until first word is encountered and at the end a new line is also counted.