Manière correcte de vider une chaîne de caractères

J’ai travaillé sur un projet en C qui nécessite beaucoup de manipulations. Normalement, je programme en C ++, donc c’est un peu différent de simplement dire ssortingng.empty ().

Je me demande quelle serait la bonne façon de vider une chaîne de caractères en C. S’agirait-il de cela?

 buffer [80] = "Bonjour le monde! \ n";

 // ...

 strcpy (tampon, "");

Cela dépend de ce que vous entendez par “vide”. Si vous voulez juste une chaîne de longueur nulle, votre exemple fonctionnera.

Cela fonctionnera également:

buffer[0] = '\0'; 

Si vous voulez mettre à zéro le contenu entier de la chaîne, vous pouvez le faire de cette façon:

 memset(buffer,0,strlen(buffer)); 

mais cela ne fonctionnera que pour la remise à zéro jusqu’au premier caractère NULL.

Si la chaîne est un tableau statique, vous pouvez utiliser:

 memset(buffer,0,sizeof(buffer)); 

Deux autres méthodes sont strcpy(str, ""); et ssortingng[0] = 0

Pour réellement supprimer le contenu de la variable (au cas où vous auriez un code non conforme qui ne fonctionnerait pas correctement avec les extraits ci-dessus: P), utilisez une boucle comme dans l’exemple ci-dessous.

 #include  ... int i=0; for(i=0;i 

Si vous souhaitez effacer un tableau alloué dynamic depuis le début, vous pouvez utiliser une combinaison de malloc () et memset () ou - et c'est beaucoup plus rapide - calloc () qui fait la même chose que malloc l'ensemble du tableau avec Null.

Enfin, je veux que vous ayez votre temps d'exécution à l'esprit. Bien plus, si vous manipulez des tableaux énormes (6 chiffres et plus), vous devriez essayer de définir la première valeur sur Null au lieu d'exécuter memset () à travers toute la chaîne.

Cela peut paraître plus sale au début, mais c'est beaucoup plus rapide. Vous devez juste faire plus attention à votre code;)

J'espère que cela a été utile pour tout le monde;)

Cela dépend de ce que vous entendez par vider. Si vous voulez juste une chaîne vide, vous pouvez faire

 buffer[0] = 0; 

Si vous voulez mettre tous les éléments à zéro, faites

 memset(buffer, 0, 80); 

a besoin du nom de la chaîne et sa longueur mettra à zéro tous les caractères que les autres méthodes peuvent arrêter au premier zéro qu’elles rencontrent

  void strClear(char p[],u8 len){u8 i=0; if(len){while(i