web-dev-qa-db-fra.com

Trouvez la longueur de la chaîne sans compter les espaces

Je fais un programme qui trouve la longueur de chaîne entrée par l'utilisateur. Tout fonctionne mais le programme compte également des espaces. Alors, comment trouver la longueur de la chaîne sans compter des espaces?

2
sefisko
  1. Utilisez les types corrects pour les tailles
  2. *(p + x) === p[x] - Où p est un pointeur et x a un type intégré. Vos deux fonction sont exactement les mêmes.
  3. Utilisez des noms qui ont un sens string_array n'est pas trop informatif et n'indique certainement pas qu'il renvoie la longueur de la chaîne sans espaces.
  4. n'utilisez pas gets fonctions car il est très dangereux. Utilisez des fonctions qui limitent le nombre de caractères placés dans la chaîne. Par exemple fgets
size_t strlenNoSpaces(const char * restrict c)
{
    size_t length = 0;
    for(; *c; c++)
    {
        if(*c != ' ') length++;
    }
    return length;
}

int main()
{
    char string[30];
    size_t length, i;

    printf("Enter string: ");
    fgets(string, 29, stdin);

    length = strlen(string);
    printf("\nLength of string using strlen.\n");
    printf("Length of string %zu.\n", length);

    length = strlenNoSpaces(string);
    printf("\nLength of string not counting the spaces.\n");
    printf("Length of string %zu.\n", length);

    return 0;
}
2
0___________