web-dev-qa-db-fra.com

Comment concaténer des caractères en C d'une chaîne avec des espaces?

J'essaie de concaténer des personnages en C, mais pas de succès. Le problème est de prendre une chaîne, de vérifier s'il y a de l'espace dans cette chaîne et créez une nouvelle chaîne à partir des lettres qui arrivent après l'espace dans cette chaîne principale.

Exemple:

String principale: hello world wide
[.____] nouvelle chaîne: hww

Je ne sais pas comment concaténer. J'ai étudié sur Internet, j'ai vu que les fonctions strcpy et strcat peuvent être utiles, mais même les utiliser, je n'ai pas réussi. De la même manière, j'ai essayé de faire quelque chose comme result += string[i + 1] et ça ne marche pas.

code source

#include <stdio.h>
#include <string.h>

int main()
{
    char string[] = "str ing placeholder";
    int stringLength = strlen(string);
    int i;
    char result;
    
    for (i = 0; i < stringLength; i++)
    {
        if (string[i] == ' ')
        {
            printf("Found space at the index: %d\n", i);
            result = string[i + 1];
            printf("\nNext char: %c\n", result);
        }
    }
    return 0;
}

J'espère que quelqu'un peut me guider. Je ne pense pas que ma logique de programme a tort, tout ce dont j'ai besoin, c'est de prendre le premier caractère de la chaîne et de chaque caractère qui suit l'espace d'une chaîne et concaténate dans une nouvelle chaîne, puis présentez cette chaîne nouvellement formée.

1
Shi Nha

Si vous devez modifier le tableau source de telle manière qu'il ne contiendrait que des premiers caractères de mots dans la chaîne stockée, le programme peut apparaître la voie suivante.

#include <string.h>
#include <stdio.h>

int main( void ) 
{
    char s[] = "str ing placeholder";
    const char *delim = " \t";
    
    for ( char *p = s + strspn( s, delim ), *q = p; *q; p += strspn( p, delim ) )
    {
        *q = *p;
        if ( *q ) ++q;
        p += strcspn( p, delim );
    }

    puts( s );
    
    return 0;
}

La sortie du programme est

siroter

0
Vlad from Moscow