Search code examples
cfor-loopc-stringscs50null-character

Why is this still counting spaces within a String?


I'm just starting to code and I need help figuring out why this loop counts spaces within a string.

To my understanding, this code should tell the computer to not count a space "/0" and increase count if the loop goes through the string and it's any other character.

int main(void)
{

    string t = get_string("Copy & Past Text\n");
    int lettercount = 0;

   for (int i = 0; t[i] != '\0'; i++)
    {
          lettercount++;
        
    }

    printf("%i", lettercount);

    printf("/n");
}

Solution

  • \0 represents the null character, not a space. It is found at the end of strings to indicate their end. To only check for spaces, add a conditional statement inside the loop.

    int main(void)
    {
        string t = get_string("Copy & Past Text\n");
        int lettercount = 0;
    
        for (int i = 0; t[i] != '\0'; i++)
        {
            if (t[i] != ' ')
                lettercount++;
        }
    
        printf("%i", lettercount);
    
        printf("\n");
    }