11
votes

Comment concatez deux caractères * en C?

Je reçois un tampon char * qui a la longueur de 10. Mais je veux concéder que tout le contenu de mon struct, qui ont une variable char *.

  real[i].buffer += buffer;


0 commentaires

3 Réponses :


4
votes

Vous pouvez utiliser strcat (3) à concaténer des cordes. Assurez-vous d'avoir suffisamment d'espace à la destination!

Notez que juste appeler strcat () Un tas de fois entraînera un Schlemiel l'algorithme du peintre . Garder une trace de la longueur totale de votre structure (ou ailleurs, si vous préférez) vous aidera à sortir avec cela.


3 commentaires

Utilisez toujours strncat (également inclus dans le lien ci-dessus) et non strcat .


Toujours? Cela semble un peu lourd. "Faites attention" est toujours un bon conseil, mais je suis d'accord avec ça. Voici une question et quelques réponses concernant quand utiliser chacune: Stackoverflow.com/Questtions/6491038/...


Si vous ne savez pas pourquoi vous utilisez strcat , ce qui est que les deux tampons sont sous garanties prédéterminées, vous devez toujours utiliser strncat . Quelqu'un commençant par C sera toujours mieux en train d'utiliser strncat sur strcat simplement parce que le risque ne vaut pas la récompense imperceptielle. Compte tenu de ce que l'avantage est réellement, je dirais même que vous n'allez jamais en tirer profit, à moins que vous n'ayez écrit quelque chose d'incroyablement faible et que les contrôles préalables ont déjà été effectués.



0
votes

Je ne suis pas clair. Voulez-vous:

  • Pour concaténer chacun des 10 tampons de caractères que vous recevez dans un tableau, pointé sur un réel [0] .buffer ou
  • Voulez-vous que chaque tampon de caractères soit pointue par un autre réel [i] .buffer ou
  • autre chose d'autre?

    Vous devrez attribuer suffisamment d'espace pour la copie du tampon: xxx


0 commentaires

12
votes

En général, procédez comme suit (ajustez et ajoutez une erreur de vérification des erreurs comme vous le trouvez) xxx


0 commentaires