[Solved] Trouble with C program blank output [closed]


Since string is an array, you don’t use & when passing it to scanf(), this gives you a double pointer and is an error. Any time you find yourself with a 10 clause if statement, you’re just asking for problems (e.g. easy to get tripped up by typos.) You can simplify this test with index() and a string containing all the vowels. It wouldn’t hurt to comment as you write your code to indicate which of the requirements each section implements. The i variable needs to be incremented every time through the loop, the j variable needs to be incremented every time a new character is added to string2. After the scanf(), you shouldn’t be assigning into string, treat it as readonly, only assign into string2. And j-1 shouldn’t happen. Finally, since string2 isn’t intialized, there may be garbage in it and you haven’t null terminated it. Putting it all together:

#include <ctype.h>
#include <stdio.h>
#include <strings.h>

#define VOWELS "AEIOUaeiou"

int main()
{
    char string[100], new_string[100] = { 0 };

    // enter a word
    scanf("%s", string);

    for (int i = 0, j = 0; string[i] != '\0'; i++)
    {
        // remove all vowels
        if (index(VOWELS, string[i]) == NULL)
        {
            // make all upper case letters lower case
            new_string[j++] = tolower(string[i]);

            if (isalpha(string[i]))
            {
                new_string[j++] = '.'; // add '.' after every consonant
            }
        }
    }

    printf("%s\n", new_string);

    return 0;
}

I’m assuming “after every constant” was meant to read “after every consonant”, otherwise please clarify what you mean by constant.

solved Trouble with C program blank output [closed]