J'ai défini c comme dans la fonction de fonction et l'a utilisé comme Quoi tort? J'ai cherché sur Net, il montre la même syntaxe. P> Merci. P> P> c [i] = "gris"; code> p>
4 Réponses :
Essayez d'utiliser Strcpy () code> (trouvé dans le
cstring code> en-tête) au lieu d'une affectation simple. p>
Vous ne pouvez pas utiliser l'affectation ( ou si le type déclaré doit être un tableau des tableaux, vous pouvez utiliser = code>) sur un tableau. Si vous modifiez
C code> sur un tableau de pointeurs, cela pourrait fonctionner, en fonction de ce que vous devez faire avec elle.
strncpy code>: p>
N'utilisez pas strncpy code>! Cela peut potentiellement vous laisser avec des chaînes non nuls.
Ok.Manks @aschepler et @Adam
Le problème est que les matrices ne sont pas assignables dans C. Constantes de cordes telles que Si vous savez que la matrice de destination est suffisamment grande pour maintenir la chaîne souhaitée, vous pouvez utiliser Une meilleure idée est d'utiliser un Fonction plus sûre telle que Cependant, ces fonctions sont spécifiques à la plate-forme et non toutes portables. Vous pouvez également lancer votre propre implémentation si la vitesse n'est pas un problème: p> do n'utilise pas "gris" code> sont des constantes de tableau de caractères: dans ce cas, le type est
Char [5] Code> (4 + 1 pour la null de terminaison).
strcpy code>
pour copier la chaîne comme: p> strlcpy code> a > (Systèmes basés sur BSD et Mac OS X) ou
p> p> strcpy_s code>
(Windows): p> strncpy code>, depuis < Un href = "https://stackoverflow.com/questions/1453876/why-does-strncpy-not-null-terminate"> Cela pourrait potentiellement vous laisser avec une chaîne non nulnulée à terme
strlcpy ?? Vouliez-vous dire 'Strncpy'? Typo là-bas, (modifier la file d'attente est complète)
Ce code fonctionnera et apportera les attributions correctes de 3 manières différentes:
#include <iostream> #include <cstring> using namespace std; int main() { string myString = "hello my friends from Brazil"; char charOut[myString.size()]; strncpy(charOut, myString.c_str(), myString.size()); std::cout << "Char by strncpy string var " << charOut << std::endl; const char *charOut2; charOut2 = "sup my homies in L.A."; std::cout << "Char by const " << charOut2 << std::endl; string myString2 = "hallo mein bruder in Berlin"; char charOut3[myString2.size()]; strcpy(charOut3, myString2.c_str()); std::cout << "Char by strcpy string var " << charOut3 << std::endl; }
Eh bien, quel avertissement ou quelle erreur voyez-vous?