This program is in C. I have most of the problem done however cannot figure out
ID: 3804984 • Letter: T
Question
This program is in C. I have most of the problem done however cannot figure out the last two errors that i am getting.
Any help is appericated. My code and errors are below.
Errors
My code
#include<stdio.h>
#include <string.h>
#include <ctype.h>
int GetNumOfNonWSCharacters(const char usrStr[]) {
int num = 0,i;
for (i = 0; i < strlen(usrStr); ++i) {
if ((usrStr[i] == ' ') || (usrStr[i] == ' ') || (usrStr[i] == ' ') || (usrStr[i] == '')) {
} else {
++num;
}
}
return num;
}
int GetNumOfWords(const char usrStr[]) {
int num = 1, i;
for ( i = 0; i < strlen(usrStr); ++i) {
if ((usrStr[i] == ' ') && (usrStr[i + 1] != ' ')) {
++num;
}
}
return num;
}
void FixCapitalization(char usrStr[]) {
usrStr[0] = toupper(usrStr[0]);
int i;
for (i = 0; i < strlen(usrStr); ++i) {
if ((usrStr[i] == '.') && (isalpha(usrStr[i + 3]) != 0)) {
usrStr[i + 3] = toupper(usrStr[i + 3]);
}
}
}
void ReplaceExclamation(char usrStr[]) {
int i = 0;
for (i = 0; i < strlen(usrStr); ++i) {
if ((usrStr[i] == '!')) {
usrStr[i] = '.';
}
}
}
void ShortenSpace(char usrStr[]) {
int i,j;
for (i = 0; i < strlen(usrStr); ++i) {
if ((usrStr[i] == ' ') && (usrStr[i + 1] == ' ')) {
for (j = i; j < strlen(usrStr); ++j) {
usrStr[j+1] = usrStr[j+2];
}
}
}
}
char PrintMenu(char usrStr[]) {
char menuOp = ' ';
printf("MENU ");
printf("c - Number of non-whitespace characters ");
printf("w - Number of words ");
printf("f - Fix capitalization ");
printf("r - Replace all !'s ");
printf("s - Shorten spaces ");
printf("q - Quit ");
while (menuOp != 'c' && menuOp != 'w' && menuOp != 'f' &&
menuOp != 'r' && menuOp != 's' && menuOp != 'o' &&
menuOp != 'q') {
printf("Choose an option: ");
scanf(" %c", &menuOp);
}
if (menuOp == 'c') {
printf("Number of non-whitespace characters: %d ", GetNumOfNonWSCharacters(usrStr));
menuOp = ' ';
} else if (menuOp == 'w') {
printf("Number of words: %d ", GetNumOfWords(usrStr));
menuOp = ' ';
} else if (menuOp == 'f') {
FixCapitalization(usrStr);
printf("Edited text: %s ", usrStr);
menuOp = ' ';
} else if (menuOp == 'r') {
ReplaceExclamation(usrStr);
printf("Edited text: %s ", usrStr);
menuOp = ' ';
} else if (menuOp == 's') {
ShortenSpace(usrStr);
printf("Edited text: %s ", usrStr);
menuOp = ' ';
}
return menuOp;
}
int main() {
char userString[256];
char menuChoice = ' ';
printf("Enter a sample text: ");
fgets(userString, 256, stdin);
printf(" ");
printf("You entered: %s ", userString);
while (menuChoice != 'q') {
menuChoice = PrintMenu(userString);
}
return 0;
}
Explanation / Answer
usrStr[0] = toupper(usrStr[0]);
int i;
for (i = 0; i < strlen(usrStr); ++i) {
if ((usrStr[i] == '.')) {
usrStr[i + 1] = toupper(usrStr[i + 1]);
}
}
}
/*********space*****************/
void ShortenSpace(char usrStr[]) {
int c=0,d=0,newstr[256];
while (usrStr[c] != '') {
if (usrStr[c] == ' ') {
int temp = c + 1;
if (usrStr[temp] != '') {
while (usrStr[temp] == ' ' && usrStr[temp] != '') {
if (usrStr[temp] == ' ') {
c++;
}
temp++;
}
}
}
newstr[d] = usrStr[c];
c++;
d++;
}
newstr[d] = '';
for (int q = 0; q < strlen(usrStr); ++q) {
usrStr[q]=newstr[q];
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.