L'attribution char tableau d'une valeur dans C

Quelle est la différence entre:

char fast_car[15]="Bugatti";

et

char fast_car[15];
fast_car="Bugatti";

Parce que la deuxième des résultats avec une erreur de compilation:

error: incompatible types lors de l'attribution to type ‘char[15] " de type
‘char *’

Tandis que le premier fonctionne très bien. Mettre une chaîne de caractères en tableau dans différents endroit de la matrice de l'initialisation serait utile.

Vous pouvez utiliser une fonction de chaîne comme snprintf ou strncpy remplir le tableau avec une nouvelle valeur
N'utilisez pas de strncpy sauf si vous êtes vraiment vraiment vraiment certain de ce que vous voulez. Assurez-vous que le tampon est assez grand et l'utilisation strcpy à la place.
il silencieusement tronque la chaîne. C'est très rarement ce que vous voulez. En outre, en tronquant il ne met pas fin à la chaîne. Voir par exemple ici.
strncpy n'est certainement pas pire que strcpy sécurité-sage. Bien sûr, vous devez être sûr de ce que vous faites dans les deux cas.
Dans de nombreux cas, un tronc de chaîne est mieux qu'un dépassement de la mémoire tampon (à condition que vous avez bien mis l'octet nul final). Combien de critique de sécurité, bugs savez-vous qui sont le résultat d'un tronc de chaîne? Bien sûr, il est encore mieux de ne pas introduire des bogues à tous, mais nous savons tous que cela n'arrivera pas. La vraie solution est d'utiliser une meilleure chaîne de la bibliothèque de la C stdlib.

OriginalL'auteur hardpenguin | 2012-08-28